静的データを収集したかどうかにかかわらず、アプリケーションをコンパイルし、計測機構を組み込み、実行して、動的メモリーアクセスデータを収集できます。discover で計測機構を組み込んでからアプリケーションを実行することによって検出される動的メモリーアクセスエラーのリストについては、動的メモリーアクセスの問題を参照してください。
sample ディレクトリで、サンプルアプリケーションを –g オプションで構築します。
このオプションではデバッグ情報が生成され、エラーおよび警告に関するソースコードおよび行番号情報をコードアナライザで表示できるようになります。
Oracle Solaris の場合:
$ cc -g main.c previse*.c sample1.c sample2.c sample3.c
Oracle Linux の場合:
$ cc -xannotate -g main.c previse*.c sample1.c sample2.c sample3.c
すでに計測機構の付いたバイナリに計測機構を組み込むことはできないため、カバレージデータの収集時に使用するバイナリのコピーを保存します。
$ cp a.out a.out.save
discover でバイナリに計測機構を組み込みます。
$ discover -a a.out
計測機構付きバイナリを実行して動的メモリーアクセスデータを収集します。
$ ./a.out
動的メモリーアクセスエラーデータが sample/a.out.analyze/dynamic ディレクトリに書き込まれます。
コードアナライザ GUI を起動して結果を表示します。
$ code-analyzer a.out &
「結果」タブに、静的な問題と動的メモリーの問題の両方が表示されます。問題の説明の背景色は、静的コードの問題 (褐色) または動的メモリーアクセスの問題 (淡い緑) のいずれであるかを示しています。
結果をフィルタリングして動的メモリーの問題だけを表示するには、「問題」タブで「動的」オプションを選択します。
「結果」タブに、中核となる 3 件の動的メモリーの問題だけが表示されます。
すべての動的メモリーの問題を表示するには、「問題」タブの上部にある「すべて」ラジオボタンを選択します。「結果」タブに、6 件の動的メモリーの問題が表示されます。
表示に追加された 3 件の問題を調べ、中核となる問題にどのように関連しているかを確認します。表示されている最初の問題の原因を修正すれば、2 番目と 3 番目の問題も解消される可能性があります。
最初の問題を調査している間、ほかの動的メモリーアクセスの問題を非表示にするには、各問題の「無視」ボタン をクリックします。
エラーアイコンをクリックしてスタックトレースを表示し、最初の問題を調査します。
この問題の場合、スタックトレースには呼び出しスタックと割り当てスタックが含まれます。
スタック内の関数呼び出しをダブルクリックして、ソースファイル内の関連する行を表示します。
ソースファイルが開くと、ファイルの下の詳細ウィンドウにスタックトレースが表示されます。
右上隅の X をクリックしてコードアナライザ GUI を閉じます。