9

私が取り組んでいるクラスの1つに対してコーディングしようとしているメソッドの場合、ファイルからdouble値を読み取り、これらの数値を使用してプログラム内のいくつかの配列を動的に設定しようとしています。

少なくとも私が来た時点までは、メモリリークがあるかどうかを確認したかったのです。ただし、CPUの負荷が高いため、起動valgrindがハングするだけでかなり動作しているように見えますが、しばらく待っていても出力は生成されません。valgrindマニュアルのページをシャッフルしましたが、何か役に立つものが見つかりませんでした。valgrind-3.8.0をコンパイルし、それを使用しています。そして、私はいつものようにそれを発射しています

valgrind --leak-check=yes --log-file=valgrind_log ./binary_to_execute args_if_any

私はまた、グーグル検索でこのぶら下がっている問題に役立つsthを見つけることができませんでした。このぶら下がっている行動の理由について何か考えはありますか?

編集1:これはアプリケーションのtimeコマンドからのタイミング出力です

47740

real    0m1.299s
user    0m1.116s
sys     0m0.176s

編集2:これは私が経験している問題と多かれ少なかれ同じであるリンクです、

同様の問題のあるメッセージ

編集3:興味深いことに気づきました。読み込もうとしているファイルサイズが大きい場合、この問題が発生します。ファイルのサイズが比較的小さい場合、このハングは発生しません。これも私には奇妙です。

4

2 に答える 2

7

大きなファイルは、より多くの作業が必要であることを示唆しています。そのため、valgrind にはさらに時間が必要です。Valgrind は非常に遅いです。

これは、世界最高のデバッガである printf() を使用して簡単にデバッグできます (半分冗談です)。メイン ループの各反復の前後に何かを出力するだけです。表示されない場合は、valgrind がどこかにぶら下がっています。printf() ステートメントを慎重に配置すると、ハングする正確な場所が明らかになります (遅いのではなく実際にハングする場合)。

于 2012-08-29T22:32:34.770 に答える
-1
  1. プログラムのメインスレッドが終了しない可能性があります
  2. valgrind出口を待つ
于 2012-08-18T14:12:54.520 に答える