インテル® Parallel Studio XE 2013 のポインターチェッカー機能: スタティック解析、インテル® Inspector XE、Mudflap との相違点

同カテゴリーの次の記事

インテル® MIC アーキテクチャー向けの高度な最適化 - ピーク転送レートを達成する方法

この記事は、インテル® ソフトウェア・サイトに掲載されている「Pointer Checker feature in Intel® Parallel Studio XE 2013: How is it different from Static Analysis, Intel® Inspector XE, Mudflap etc?」の日本語参考訳です。


ポインターチェッカーは、インテル® Parallel Studio XE 2013 の重要な “新機能” です。以下の表は、スタティック解析、Mudflap、インテル® Inspector XE との主な相違点をまとめたものです。

機能 相違点
インテル® Parallel Studio XE 2013 のポインターチェッカー
  • 解析タイプ: ダイナミック・ランタイム解析および保護。
  • バッファー・オーバーフローとオーバーランを検出 – 配列とダングリング・ポインター (スタック & ヒープ) を含む、ポインターを使用するすべてのメモリーアクセスの境界チェックを行います。
  • コンパイラー・オプションで有効になり、リンクフェーズで自動的にリンクされるランタイム・ライブラリーに実装されます。構造体のレイアウトや ABI に変更はありません。
  • 対応するラッパー RTL 関数ライブラリーを使用して、すべての標準 RTL 関数のチェックを行います。
  • 境界操作用の “組込み関数” を提供します。これは、ランタイム・ライブラリー関数 (RTL) のラッパーを記述する際に役立ちます。
      例: カスタム・メモリー・アロケーター
  • 境界違反をデバッグするためのブレークポイントを含む、範囲外エラーの発見とレポートを制御するユーザー API を提供します。
  • ポインターチェッカーは、1 つまたは複数のファイル、あるいはアプリケーション全体で有効にできます。また、ポインターチェッカーが有効なコードとそうでないコードは共存できます。
  • リアルタイム・チェックのため、誤検出は少なめです。
インテル® Parallel Studio XE 2013 のスタティック解析
  • 解析タイプ: ソースコードのスタティック解析。
  • ポインターチェッカーと比べると、ビルド処理が複雑です。
  • バッファー・オーバーフロー、ポインターの誤った使用、メモリーリーク、その他のプログラムエラーを検出します。注: スタティック解析のため、ポインターが指す内容はランタイムと異なることがあります。
  • ダイナミック解析と違い、指定されたワークロードで使用される実行パスだけでなく、可能なすべての実行パスを検証します。
  • 結果の表示、ナビゲーション、問題の修正には、インテル® Inspector XE 2013 が必要です。
  • 誤検出が多くなる可能性があります。また、多くの場合、結果は決定的ではありません。
インテル® Inspector XE 2013
  • 解析タイプ: ダイナミック・ランタイム解析
  • ダイナミック・ランタイム・バイナリー・インストルメンテーションを使用します。
  • 問題の表示とナビゲーション用の GUI インターフェイスを提供します。
  • バッファー・オーバーフロー、メモリーリーク、ダングリング・ポインターを検出します。
  • ポインター境界操作用の “組込み関数” は提供しません。
  • ポインターの範囲外エラーの発見とレポートを詳細に調整するユーザー API は提供しません。
  • リアルタイム・チェックのため、誤検出は少なめです。
  • ソースコードに移動して、原因を特定できます。
Mudflap
  • 解析タイプ: ダイナミック・ランタイム解析および保護。
  • バッファー・オーバーフロー、オーバーラン、ダングリング・ポインターを検出します。
  • コンパイラー・オプションで有効になり、ランタイム・ライブラリーで実装されます。ランタイム・ライブラリーは、リンクフェーズで自動的にリンクされないため、ユーザーが指定する必要があります。
  • アプリケーションによっては、ライブラリーと Mudflap インストルメンテーションで互換性問題が発生することがあります。
  • ダイナミック共有オブジェクト (DSO) には対応していません。
  • ポインター境界操作用の “組込み関数” は提供しません。
  • 違反メッセージは慣れるまで解読が困難です。
  • リアルタイム・チェックのため、誤検出は少なめです。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事