コールグラフ
用意するものはgprof, graphviz(dotコマンド), cgprof.
gprofのヘルプやマニュアルにある通り,コンパイル時とリンク時に
gccに-pgオプションをつける.
$ ./a.out $ gprof ./a.out | cgprof -Tps > callgpraph.ps
とすればよい.
既にgprof ./a.outを実行した後のプロファイルファイル(profile)を保存しているなら,
$ cgprof profile | dotty -
または,
$ cgprof -Tps profile | display
で表示される.
後者はprofileの引数の位置が-Tpsより後ろにないとdot用のファイルができるようだ.
cgprofのソースは特に確認していないが.
それと-hでは-gオプションがあると書かれているが,うまく動かない.
これも引数の位置に制約がありそうだな.
参考
pvtrace使っているもの
- Graphvizによるファンクション・コールの視覚化
- http://www.mtjones.com/ zipはHTTP status code 404
pvtraceを修正したものを使っているもの
cgprofを使っているもの
"類似ツール"で色々まとめてられている
メモ
addr2line
mangle/demangle
c++filt
addr2line
$ gcc -Wl,-Map=test.map -g -o a.out tmp.c $ grep main test.map 0x0000000008048300 __libc_start_main@@GLIBC_2.0 0x00000000080483d4 main $ addr2line 0x080483d4 -e a.out -f main /home/XXX/tmp/tmp.c:6 $