–xprevise コンパイラオプションを使用してバイナリを構築すると、コンパイラは静的エラーを自動的に抽出し、データをソースコードと同じディレクトリの binary-name.analyze ディレクトリの static サブディレクトリに書き込みます。コンパイラで検出される静的エラーの種類のリストについては、静的コードの問題を参照してください。
sample ディレクトリで、次のように入力してアプリケーションを構築します。
Oracle Solaris の場合:
$ cc -xprevise main.c previse*.c sample1.c sample2.c sample3.c
Oracle Linux の場合:
$ cc -xannotate -xprevise main.c previse*.c sample1.c sample2.c sample3.c
静的エラーデータが sample/a.out.analyze/static ディレクトリに書き込まれます。
コードアナライザ GUI を起動して結果を表示します。
$ code-analyzer a.out &
コードアナライザ GUI が開き、コンパイル時に見つかった静的コードの問題が「結果」タブに表示されます。「結果」タブの左上にあるテキストは、13 件の静的コードの問題が検出されたことを示しています。
タブでは、各問題について、問題の種類、問題が見つかったソースファイルのパス名、およびそのファイルの該当するソース行を強調表示したコードスニペットが表示されます。
最初の問題、「メモリーの二重解放」エラーの詳細を表示するには、エラーアイコン
をクリックします。
問題のスタックトレースが開き、エラーパスが表示されます。
スタックトレースを開くと、問題の右上隅に表示されているアイコンが
から、問題を確認したことを示す
に変わることがわかります。
同じエラーアイコンをクリックして、スタックトレースを閉じます。
「初期化されていないメモリーの読み取り」警告の 1 つの警告アイコン
をクリックして、スタックトレースを開きます。
この問題のエラーパスには、「メモリーの二重解放」問題のエラーパスよりもはるかに多くの関数呼び出しが含まれています。
最初の関数呼び出しをダブルクリックします。
ソースファイルが開き、その呼び出しが強調表示されます。エラーパスは、ソースコードの下の詳細ウィンドウに表示されます。
エラーパス内のその他の関数呼び出しをダブルクリックしていくと、エラーにつながったパスをコード内で追尾できます。
問題の説明の左側にある情報ボタン
をクリックして、UMR エラータイプに関する詳細情報を確認します。
コード例や考えられる原因などを含め、エラータイプの説明がオンラインヘルプブラウザに表示されます。
右上隅の X をクリックしてコードアナライザ GUI を閉じます。