10.4.3. Valgrind
Red Hat Enterprise Linux 7 には Valgrind が含まれています。これは、アプリケーションをプロファイリングするための多数のツールを含む計測フレームワークです。このバージョンは Valgrind 3.9.0 リリースに基づいており、Valgrind 3.8.1 に基づいていた Red Hat Enterprise Linux 6 および Red Hat Developer Toolset 2.1 の対応物に比べて多くの改善が含まれています。
Red Hat Enterprise Linux 7 に含まれる Valgrind の注目すべき新機能は次のとおりです。
- DFP 機能がインストールされているホストでの IBM System z 10 進浮動小数点命令のサポート。
- IBM POWER8 (Power ISA 2.07) 命令のサポート。
- Intel AVX2 命令のサポート。これは 64 ビットアーキテクチャーでのみ使用できることに注意してください。
- Intel Transactional Synchronization Extensions (Restricted Transactional Memory (RTM) と Hardware Lock Elision (HLE) の両方) の初期サポート。
- IBM PowerPC でのハードウェアトランザクションメモリーの初期サポート。
- 変換キャッシュのデフォルトサイズは 16 セクターに増加しました。これは、大規模なアプリケーションでは計装と大量のコードの保存が必要になるという事実を反映しています。同様の理由で、追跡できるメモリーマップドセグメントの数が 6 倍に増えました。変換キャッシュ内のセクターの最大数は、新しいフラグ
--num-transtab-sectors
で制御できます。 - Valgrind は、オブジェクト全体のマッピングを一時的に作成してから読み取ることはなくなりました。代わりに、読み取りは小さな固定サイズのバッファーを介して行われます。これにより、Valgrind が大きな共有オブジェクトからデバッグ情報を読み取るときの仮想メモリースパイクが回避されます。
- 使用された抑制のリスト (
-v
オプションが指定された場合に表示される) は、使用された抑制ごとに、抑制が定義されているファイル名と行番号を表示するようになりました。 - 新しいフラグ
--sigill-diagnostics
を使用して、ジャストインタイム (JIT) コンパイラーが変換できない命令に遭遇したときに診断メッセージを出力するかどうかを制御できるようになりました。実際の動作 (アプリケーションへの SIGILL シグナルの配信) は変更されていません。 - Memcheck ツールが改善され、次の機能が追加されました。
- ベクトルコードの処理が改善され、誤ったエラーレポートが大幅に減少しました。これらの変更の利点を得るには、
--partial-loads-ok=yes
フラグを使用してください。 - リークチェッカーの制御が向上。どの種類のリーク (確定、間接、可能、到達可能) を表示するか、エラーと見なすか、特定のリーク抑制によって抑制すべきかを指定できるようになりました。これは、オプション
--show-leak-kinds=kind1,kind2,..
、--errors-for-leak-kinds=kind1,kind2,..
およびオプションのmatch-leak-kinds:
抑制エントリーの行を使用して行われます。生成されたリーク抑制にはこの新しい行が含まれているため、以前のリリースよりも具体的であることに注意してください。以前のリリースと同じ動作を得るには、使用する前に、生成された抑制からmatch-leak-kinds:
行を削除します。 - より優れたヒューリスティックを使用して、リークチェッカーからの
リークレポートの可能性
を減らしました。利用可能なヒューリスティックは、std::stdstring への有効な内部ポインター、デストラクタを持つ要素を持つ new 割り当て配列への有効な内部ポインター、および多重継承を使用する C++ オブジェクトの内部部分を指す内部ポインターの検出を提供します。--leak-check-heuristics=heur1,heur2,...
オプションを使用して個別に選択できます。 - ヒープ割り当てブロックのスタックトレース取得の制御が向上しました。
--keep-stacktraces
オプションを使用すると、割り当てと解放ごとにスタックトレースを取得するかどうかを個別に制御できます。これは、より良い解放後の使用エラーを作成するために、またはより少ない情報を記録することによって Valgrind のリソース消費を減らすために使用できます。 - リーク抑制の使用状況のレポートが改善されました。使用された抑制のリスト (
-v
オプションが指定されている場合に表示) は、リーク抑制ごとに、最後のリーク検索中に抑制されたブロックとバイト数を表示するようになりました。
- 次の監視コマンドにより、Valgrind GDB サーバーの統合が改善されました。
- 新しい監視コマンド v.info open_fds は、開いているファイル記述子と追加の詳細のリストを提供します。
- Valgrind によって記録されたスタックトレースに関する情報を表示する新しい監視コマンド v.info execontext。
- 特定の内部整合性チェックを実行するための新しい監視コマンド v.do cost_sanity_check_general。