toge's diary

コンピュータ関連の趣味をつらつらと。

valgrindで試す

id:higepon:20051229:1135837892

ひげぽんさんの日記より、メモリー周りの問題チェックを行ってくれるvalgrindを使ってみました。
MMXとかSSEとか使っていると実行に失敗してしまうので-marchとか-msse -mmmxとかしないほうが良いみたいです。

相変わらずOpenGLなプログラムだと馬鹿みたいにParam周りのメッセージが出まくる。こういうメッセージが鬱陶しい場合には、次のようなファイルを作って、--suppresions=hoge.supp みたいに渡すといいらしい。

{
  OpenGL_driver bug
  Memcheck:Cond
  obj:/usr/lib/libGL.so.1.0.8178
} 

しかしこの定義を細かく書くのが思いの他面倒臭い。まあ、今のところ --show-reachable=yes で出てくる reachable block(開放し忘れたメモリーブロックのことらしい)だけ見れればいいので、ログの最後の方だけ見ていればいいんですけどね。

忘れてた時用に、今使っているオプションを書いておこう。

 valgrind --log-file=valgrind.log  --leak-check=yes --show-reachable=yes --suppressions=util/valgrind.supp --error-limit=no --tool=memcheck [program] 

案の定destructor書き忘れとか、そもそもnewしたポインタをそのまま登録してそのままにしてたりとか、色々みつかってしまいました。まあプログラムが稼動している間ずっと使うデータが殆どなので半ば意図的ですが。
でもファイル読み込みクラスのdestructor書き忘れはちょっと恥かしいな