第13章 Valgrind

Valgrind は、プロファイリングアプリケーション用のツールが多数同梱されるインストルメンテーションフレームワークです。これは、初期化されていないメモリーの使用、メモリーの不適切な割り当ておよび解放など、さまざまなメモリーエラーやメモリー管理の問題を検出するために使用できます。Red Hat Developer Toolset バージョンの Valgrind で配布されるプロファイリングツールの完全リストは、表13.1「Red Hat Developer Toolset の Valgrind で配布されるツール」 を参照してください。

Valgrind は、アプリケーションを書き換え、書き換えたバイナリーをインストルメント化して、アプリケーションのプロファイルを作成します。これにより、アプリケーションを再コンパイルせずにプロファイリングできますが、Valgrind は特に非常に詳細な実行を実行する場合など、他のプロファイラーよりも大幅に遅くなります。したがって、これは時間固有の問題のデバッグや、カーネルスペースのデバッグには適していません。

Red Hat Developer Toolset には Valgrind 3.16.1 が同梱されています。このバージョンは、以前のリリースの Red Hat Developer Toolset に含まれるバージョンよりも新しいもので、バグ修正および機能拡張が追加されています

表13.1 Red Hat Developer Toolset の Valgrind で配布されるツール

名前説明

Memcheck

システムコールを傍受し、読み書き操作をすべてチェックして、メモリー管理の問題を検出します。

Cachegrind

レベル 1 命令キャッシュ (I1)、レベル 1 データキャッシュ(D1)、および統一レベル 2 キャッシュ (L2) をシミュレートして、キャッシュミスのソースを特定します。

Callgrind

関数呼び出し履歴を表す呼び出しグラフを生成します。

Helgrind

POSIX スレッドのプリミティブを使用するマルチスレッド C、C++、および Fortran プログラムで同期エラーを検出します。

DRD

POSIX スレッドのプリミティブまたは、これらの POSIX スレッドのプリミティブ上に構築された他のスレッド概念を使用するマルチスレッド C および C++ プログラムのエラーを検出します。

Massif

ヒープおよびスタックの使用状況を監視します。

13.1. Valgrind のインストール

Red Hat Developer Toolset では、devtoolset-10-valgrind パッケージで Valgrind が提供され、devtoolset-10-perftools で自動的にインストールされます。

Red Hat Developer Toolset および関連パッケージをシステムにインストールする方法は、「Red Hat Developer Toolset のインストール」 を参照してください。

注記

GNU デバッガーValgrind を組み合わせて使用する場合は、Red Hat Developer Toolset に含まれる GDB のバージョンを使用して、すべての機能が完全にサポートされることを確認することが推奨されます。