これは古い質問ですが、これはで可能になりました--call-graph dwarf
。manページから:
-g
Enables call-graph (stack chain/backtrace) recording.
--call-graph
Setup and enable call-graph (stack chain/backtrace) recording, implies -g.
Allows specifying "fp" (frame pointer) or "dwarf"
(DWARF's CFI - Call Frame Information) as the method to collect
the information used to show the call graphs.
In some systems, where binaries are build with gcc
--fomit-frame-pointer, using the "fp" method will produce bogus
call graphs, using "dwarf", if available (perf tools linked to
the libunwind library) should be used instead.
これにはやや最近のLinuxカーネルが必要だと思います(> = 3.9?完全にはわかりません)。ディストリビューションのperfパッケージがlibdwまたはlibunwindとリンクされているかどうかを確認できますreadelf -d $(which perf) | grep -e libdw -e libunwind
。Fedora 20では、perfはlibdwにリンクされています。
perf record --call-graph dwarf
私のためにこの問題を解決します。残念ながら、ドワーフ情報を使用する場合、perfには呼び出し元ベース(つまり「反転」)のコールグラフを表示する際に問題があるようです。だからこそ、視覚化のためにFlameGraphを使い始めました。