2002 advanced seminar Intelligent Systems Design Lab. 1 strace/ltrace 2003 3 31 : strace/ltrace strace ltrace 1 1.1 OS API1 time() 1 printf() C printf() 1.2 OS SIGINT Ctrl-C � � $ man 7 signal � � kill 1.3 C printf() scanf() 2 UNIX Windows 1.4 2 strace 2.1 strace � � $ strace � � Fig. 1 “Hello, world!” strace strace Fig. 2 “Hello, world” 3 C printf() “Hello, world!” write() 1Application Programmin
Strace Analyzer - Next Generation This is the next generation of strace analyzer that uses the elapsed time capability of the strace function. This is more precise than the previous version. There are some other changes to make things a bit easier for managing data and for future upgrades. Link to versions and source How to create an strace fileCreating the strace file that is appropriate for the
The webinar will covers how to use powerful tools to see how your code is executed, so you can understand, debug and optimize it. Each tool will be presented with a variety of real-world examples of how it was used to solve problems in a popular library or application. The talk will covers techniques that can be used to troubleshoot production ruby deployments from three perspectives: The operati
self.blog(subject=random.choice(['mac', 'python', 'everything else'])) One of the most important tools for sysadmins and programmers working in the Linux/BSD environment is called strace. As it took me some time to find out where is “strace for Mac”, I thought it would be worth documenting here… Making a long story short: in Tiger it was called ktrace, in Leopard it’s called dtrace, but it’s simpl
ltrace で共有ライブラリの関数呼び出しをトレースする ltrace は共有ライブラリの関数呼び出しをトレースする Linux 用のツールです。システムコールをトレースするstrace と同様に、デバッグに大変役立ちます。 ltrace は Debian GNU/Linux の場合は sudo apt-get install ltrace でインストールできます。 ltrace の使い方は簡単です。基本的には ltrace コマンドの引数にトレースしたいコマンドとその引数を並べれば OK です。デフォルトでは ltrace のメッセージは標準エラーに出力されます。これをファイルに出力させるには -o オプションを用います。たとえば、次のように実行します。 % ltrace -o log.txt wget https://www.codeblog.org/ この例では wget が ht
UNIX 偏向文書 artu の中で "Measure Before Optimizing" と説く Raymond は, 同時にプロファイラの計測機構 (instrumentation) がもたらすノイズについて注意を促している. 私のプロファイラ信仰に不安が翳を落とす. gprof ノイズはさておき, そもそもプロファイラはどんな仕組みで速度を測っているんだろう. gprof のマニュアル によると, GNU 一族のプロファイラは次のように実装されている: まず "-pg" オプションつきの gcc でソースをコンパイルする. この指示を受けたコンパイラは各関数の冒頭に "mcount" という名前の関数呼出しを加える. リンクする C のランタイムも専用バージョン (gcrt0.o) に差し替わる. このランタイムは裏で profil() 関数を使いタイマを仕掛ける. そのタイマは発
リファレンス: Debug Hacks Conference 2009 Debug Hacks Conference 2009開催した Asianux Server3 に ZABBIX 1.6.4 をインストールする 「Hack#43 strace を使って、不具合原因の手がかりを見つける」を kyamato さんが紹介されています。strace はデバッグだけでなく、ソースコードを読む前の、アタリを付けるときにも有効だと思います。尚、この方法は sochoi さんから教わった方法です。sochoi さんは、以前、20万行の strace ログから、バグの要因となる50行を短時間で見出した strace のスペシャリストです。何故、Debug Hacks に hack を書かなかったのかが私は不思議なぐらいです(^ ^;; さて、先日、zabbix-agent が設定されたユーザパ
Analyzing Asynchronous I/O Support with Oracle10g Published December 6, 2006 I/O Topics , oracle , Oracle Asynchronous I/O , Oracle DBWR , Oracle I/O Performance 6 Comments This is not a post about why someone would want to deploy Oracle with a mix of files with varying support for asynchronous I/O. It is just a peek at how Oracle10g handles it. This blog post is a continuation of yesterday’s topi
Analyzing Oracle10g Database Writer I/O Activity on Linux Published December 5, 2006 DBWR Performance , oracle , Oracle Asynchronous I/O , Oracle DBWR 2 Comments Using strace(1) to Study Database Writer on Linux This is a short blog entry for folks that are interested in Oracle10g’s usage of libaio asynchronous I/O routines (e.g., io_submit(2)/io_getevents(2)). For this test, I set up Oracle10g re
top は vmstat に比べて負荷がかかると言いますが、具体的に何が違うのかちょっと調べてみました。 オープンするプロセスファイルシステム(/proc)のファイルが違う気がするので、strace で調べてみました。 vmstat がオープンしているファイルを調べる。 % strace -e open vmstat 1 1 open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libproc-3.2.7.so", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/proc/stat", O_RDONLY) = 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r
小幡さん、yohei-aさん、wmo6hashさんなど、いろいろご意見がありましたが、一度、Oracleの非同期I/Oの実装はどうだったのか再確認が必要だと思いちょっと調べてみます。 手当たり次第やってもしょうがないので、以下の3つの観点で調査してみます。多分、何回かに分けて調査すると思うのですが、今回は初期化パラメータfilesystemio_options = [none|directio|asynch|setall]でどのようにI/Oに関するシステムコールが変化するか見てみます。 1. データファイルへの書き込み これは、DBWRが行っていますので、filesystemio_optionsの各モードでDBWRがopen|writeを どのように実行しているか? 2.REDOへの書き込み これは、LGWRが行っていますので、filesystemio_optionsの各モードでLGWRが
最近、とあるクローズドソースなデバイス管理ツールの挙動が気になり、その動作について解析してみることにしました。 プログラムをデバッグしたり解析したい時、どんなシステムコールが呼ばれ、どのような引数が渡されているかを、調べることができる strace は非常に有用です。 しかし、strace では ioctl で渡される複雑なデータ構造を表示することはできないため、システムコールをフックして引数を表示するという手段を取ることにしました。 そんな訳で linux でシステムコールをフックする方法について調べて見たところ、意外といろいろな方法が有ることを知りましたので、試してみた方法を幾つか紹介したいと思います。 注)今回の実験に使用した linux kernel のバージョンは 2.6.25.11 です。異なるバージョンではこの実験通りにはならない場合があります。 LD_PRELOAD を使っ
システム管理作業中にふと見ると、幸か不幸か不審なプロセスを見つけてしまった。そんなときの調査手順に盛り込んでおくと役に立つのが、strace(Linuxなど)やtruss(Solaris)などのデバッグコマンドによる調査である。 root権限があればstraceやtrussコマンドを使用して任意のタスクに対して、そのタスクにおけるシステムコールの実行状況を表示させることで、そのタスクが「何をしようとしているか?」を突き止められる場合がある。例えば、不審な時刻にシェルにログインしているユーザーを発見したとしよう。 [root@voyager admin]# who admin pts/0 Dec 25 12:28 (admin.localdomain.local) joe pts/1 Dec 25 13:22 (dsl-192038.example.com) <--不審ユーザー [root@
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く