読者です 読者をやめる 読者になる 読者になる

fugatrace

Update

なんか TCC だの WebKit だのを触っていると、ツリー構造を何度もなめてて同じコードを何度も通る感じになって、デバッガの breakpoint がイマイチ機能しない時があります。そういう時は printf を仕込んだり条件付き break を使ったりとかするわけですが、まぁそういうもののオルタナティブとして tracer を書いてみました。

http://github.com/shinh/fugatrace

Mach-O と ELF 両方で動かにゃならんので適当に RubyGDB を使ういい加減な作りになっています。名前は hogetrace リスペクトで。

出力としてはこんな感じ。

http://shinh.skr.jp/dat_dir/trace.html.gz

重要なオプションは -g と -b と -R で、 -g は gdb の rbreak を使って正規表現で breakpoint を指定します。 -b は手動で break 。複数仕込む時はカンマで区切る。 break で止める場所の前に @ とすることで を break した時に発行して記録に残せる。 -R は exclude リストで、 -g で過剰に指定しすぎちゃった breakpoint を外すためのもの。

本当は -r というフラグで GDB のじゃなくて Ruby正規表現で break する位置を指定できるようにしたかったのだけど、 MacGDB の rbreak が WebKit でやるとメモリ使いつくして落ちるので今のところやってません。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h