メモリー解析ツールを使用して、プロジェクト内のメモリーアクセスエラーを見つけることができます。このツールを使用すると、ソースコード内で各エラーが発生する場所を正確に特定されるので、これらのエラーを簡単に見つけることができます。
メモリー解析ツールはプログラムの実行中にメモリーアクセスエラーを動的に検出して報告するため、コードの一部が実行時に実行されていない場合、その部分のエラーは報告されません。
まだ行なっていない場合は、「Oracle Solaris Studio 12.3 Sample Applications」の Web ページ (http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/solaris-studio-samples-1408618.html) からサンプルアプリケーション zip ファイルをダウンロードし、任意の場所にファイルを解凍します。memorychecks アプリケーションは、SolarisStudioSampleApplications ディレクトリの CodeAnalyzer サブディレクトリにあります。
memorychecks アプリケーションを使用して、既存のソースからプロジェクトを作成します。
プロジェクトを右クリックし、「プロパティー」を選択します。「プロジェクトのプロパティー」ダイアログボックスで、「実行」ノードを選択し、「コマンドを実行」で、出力パスのあとに Customer.db と入力します。「OK」をクリックします。
プロジェクトを実行します。
メモリー解析のための計測付きのプロジェクトを構築します。
「プロジェクトをプロファイル」ボタン の横にある下矢印をクリックして「プロジェクトをプロファイル」を選択し、ドロップダウンリストから「メモリーアクセスエラー」を見つけます。
「解析の種類を選択」ダイアログボックスで、ドロップダウンリストから「すべてのメモリーアクセスエラー」を選択します。
「オーバーヘッド」フィールドにはシステムにかかる負荷を示す「高」または「中」が表示されます。オーバーヘッドが高い場合、システム上で実行中のほかのプログラムのパフォーマンスに影響が出ることがありますが、データの競合とデッドロックの両方が検出されるのはこの場合です。
「開始」をクリックします。
「メモリープロファイルを実行」ダイアログボックスが開き、バイナリが計測されることが通知されます。「OK」をクリックします。
プロジェクトが構築され計測されます。アプリケーションが実行を開始し、「メモリー解析」ウィンドウが開きます。プロジェクトの実行が完了すると、プロジェクト内で見つかったメモリーアクセスエラーの種類の一覧が「メモリー解析」ウィンドウに表示されます。エラーの種類のあとの括弧内に、それぞれの種類のエラー数が表示されます。
エラーの種類をクリックすると、その種類のエラーが「メモリー解析ツール」ウィンドウに表示されます。
デフォルトでは、エラーはエラーが見つかったソースファイル別にグループ化されます。エラーをクリックすると、そのエラーの呼び出しスタックが表示されます。スタック内の関数呼び出しをダブルクリックすると、ソースファイル内の関連する行が表示されます。