6
私のC++プログラムでは、多くのCPUを消費しています。私は、CPUの使用率をプロファイリングするために、Googleのパフォーマンスツールを使用し、これは私が得たものである:Googleのperfツールのアドレスを解釈する方法CPUプロファイラ
(pprof) top
Total: 1343 samples
1330 99.0% 99.0% 1330 99.0% 0x0000000801dcb11c
7 0.5% 99.6% 7 0.5% 0x0000000801dcb11e
4 0.3% 99.9% 4 0.3% program::threadWorker
1 0.1% 99.9% 1 0.1% 0x0000000801dcb110
1 0.1% 100.0% 1 0.1% 0x00007fffffffffc0
しかし、1つだけここに示した5つの工程のうち、実際の関数名です。残りはアドレスです。どのようにしてこれらのアドレスが関係しているのかを知ることができますか?
編集(もちろん、私は、上に示した最初のアドレスの中で最も興味を持っています):これは私がプロファイラを実行する方法である:
env CPUPROFILE=prof.out ./a.out
[kill program]
pprof ./a.out prof.out
また、私はコード検査によって根本的な原因を発見しました。しかし、プロファイラが住所ではなく犯人の機能を特定することは、依然として素晴らしいことです。
プロファイラをどのように実行したかを私の質問に編集しました。私は、共用ライブラリからではなく、同じファイルで宣言された原因を見つけました。 – jules
@jules:プロファイラが原因を見つけるのに役立ちましたか? –
@Mike Dunlavey:いいえ、私のプログラムはかなり小さいので、コード検査で見つけました。 – jules