C(++)言語: valgrindの使い方
Kazuki Ohta, 2006/05/20

「Binary Hacks」
(1) Valgrindに含まれるツール
Valgrindにはいくつかのツールが同梱されている。Memcheck
- メモリリーク・初期化されていないメモリ領域へのアクセス・開放されたメモリ領域へのアクセス等、メモリ関連のバグについての検出を行う
Addrcheck
- Memcheckの軽量版で、初期化されていないメモリ領域へのアクセスのチェックを行わない代わりに2倍早く動作する
Cachegrind
- キャッシュプロファイラ。KcacheGrindと併用する事で得られた情報を視覚化する事が出来る
Massif
- ヒーププロファイラ。メモリ使用量等を測定する事が出来る
Helgrind
- (POSIX p)-threadの競合の検出を行う。ただしversion 3.1.0では使えない。3.2.0からは使えるようになるようだ。
これらのツールは共通して"valgrind"というコマンドから以下のように使用する。(注)僕の環境ではaddrcheckは動かなかった。
valgrind --tool=memcheck ls valgrind --tool=addrcheck ls valgrind --tool=cachegrind ls valgrind --tool=helgrind ls
こうする事でlsコマンド内部のメモリアクセスエラーを検出する事が出来る。defaultではmemcheckが使われるので、memcheckを使用する際には--toolを指定する必要は無い。また出力はstderrに吐かれるので、ログを残したい場合はリダイレクトするか --log-file=
libtoolを用いてビルドされたプログラムの場合には以下のようにして用いる
libtool --mode=execute valgrind hogehoge
[ return ]