CentOSリポジトリの標準gcc 4.4パッケージを使用して、64ビットCentOS 5.8で静的にリンクされた64ビットC++アプリケーションを開発しています。それは私が予想したより多くのメモリを使用しているように見えるので、メモリ使用量をプロファイリングするためにmassifを使用しようとしました。私は、デバッグ情報付きでコンパイルして、MYPROGが存在するディレクトリからValgrindのmassifツールは私のアプリケーションをプロファイルしません
valgrindの--tool =山塊./MyProg
を実行しました。次のmassif.out.XXXXの例以外の結果は生成されません。
desc: (none)
cmd: ./MyProg
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
これはファイルの内容全体と私のプログラムが何分間も実行できることに注意してください。
私はvalgrindとmassifにさまざまなオプションを試してみました。 MyProgへの絶対パスを使ってみました。私はvalgrind(3.8.1)の最新の安定版をダウンロードしてコンパイルして実行しましたが(CentOSは3.5.0を使用しているので)、同じ結果が得られました。健全性チェックとしてIは
-l
valgrindの--tool =山地LSを実行し、予想されるように、非ゼロのメモリ使用量との複数のスナップショットを生成しました。
私は考えることのできるキーワードの組み合わせを使用してオンラインで検索しようとしましたが、同様の問題は見つかりませんでした。
便利な情報がある場合は、valgrindのデフォルトmemcheckツールを使用してアプリケーションを正常にプロファイルできます。
誰も私のアプリケーションのプロファイリングに失敗する理由を知っていますか?
プログラムは静的にリンクされていますか? 'ldd ./MyProg'を実行すると、共有ライブラリのリストが表示されるのですか、それとも何も印刷されませんか? –
静的にリンクされています。私はこれを明確にするために質問を編集しました。 – Tyson