CentOS リポジトリの標準 gcc 4.4 パッケージを使用して、64 ビット CentOS 5.8 で静的にリンクされた 64 ビット C++ アプリケーションを開発しています。予想以上にメモリを使用しているように見えるので、massif を使用してメモリ使用量をプロファイリングしてみました。デバッグ情報をコンパイルして実行しました
valgrind --tool=massif ./MyProg
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 を使用しているため)、同じ結果が得られました。健全性チェックとして実行しました
valgrind --tool=massif ls -l
また、予想どおり、ゼロ以外のメモリ使用量で複数のスナップショットを作成しました。
考えられるあらゆるキーワードの組み合わせを使用してオンラインで検索してみましたが、同様の問題は見つかりませんでした。
余談ですが、valgrind のデフォルトの memcheck ツールを使用して、アプリケーションのプロファイルを正常に作成できます。これが役立つ情報である場合に備えてです。
massif がアプリケーションのプロファイリングに失敗する理由を知っている人はいますか?