JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2 Discover および Uncover ユーザーズガイド
search filter icon
search icon

ドキュメントの情報

はじめに

1.  概要

2.  Sun メモリエラー探索ツール (Discover)

Discover を使用するための要件

バイナリは正しく準備される必要がある

プリロードまたは監査を使用するバイナリは使用できまい

クイックスタート

準備されたバイナリの計測

共有ライブラリのキャッシュ

共有ライブラリの計測

ライブラリの無視

コマンド行オプション

出力オプション

計測オプション

キャッシュオプション

その他のオプション

bit.rc 初期化ファイル

SUNW_DISCOVER_OPTIONS 環境変数

計測済みバイナリの実行

Discover レポートの分析

HTML レポートの分析

「エラー (Errors)」タブの使用法

「警告 (Warnings)」タブの使用法

「メモリーリーク (Memory Leaks)」タブの使用法

コントロールパネルの使用法

ASCII レポートの分析

メモリーアクセスエラーと警告

メモリーアクセスエラー

ABR

ABW

BFM

BRP

DFM

FMR

FMW

FRP

IMR

IMW

PIR

UAR

UAW

UMR

メモリーアクセスの警告

AZS

Discover エラーメッセージの解釈

部分的に初期化されたメモリー

スペキュレイティブロード

未計測コード

Discover 使用時の制限事項

注釈付きコードのみが計測される

機械命令はソースコードとは異なる場合がある

コンパイラオプションは生成されたコードに影響を及ぼす

システムライブラリは報告されたエラーに影響を及ぼす可能性がある

カスタムメモリー管理はデータの正確さに影響を及ぼす可能性がある

静的および自動配列範囲外は削除できない

3.  コードカバレッジツール (Uncover)

索引

クイックスタート

次の内容は、プログラムを準備し、Discover を使用して計測を行い、それを実行して、検出したメモリーアクセスエラーに関するレポートを生成する例です。この例は初期化されていないデータにアクセスする単純なプログラムを使用します。

% cat test_UMR.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
  //  UMR:  accessing uninitialized data
  int *p = (int*) malloc(sizeof(int));
  printf("*p = %d\n", *p);
  free(p);
}

% cc -g -02 test_UMR.c
% a.out
*p = 131464
% discover -w - a.out
% a.out
ERROR (UMR): accessing uninitialized data from address 0x50010 (4 bytes) at:
        main() + 0x54  <test_UMR.c:7>
                 4:    {
                 5:      //  UMR:  accessing uninitialized data
                 6:      int *p = (int*) malloc(sizeof(int)); 
                 7:=>    printf(**p = %d\n", *p);
                 8:      free(p);
                 9:    }
        _start() + 0x108
    block at 0x50010 (4 bytes long) was allocated at:
        malloc() + 0x220
        main() + 0x1c  <test_UMR.c:6>
                3:    int main()
                4:    {
                5:      //  UMR:  accessing uninitialized data
                6:=>    int *p = (int*) malloc(sizeof(int)); 
                7:      printf(**p = %d\n", *p);
                8:      free(p);
                9:    }
        _start() + 0x108
*p = 327704
**************** Discover Memory Report *****************
No allocated memory left on program exit.
DISCOVER SUMMARY:
        unique errors   : 1 (1 total, 0 filtered)
        unique warnings : 0 (0 total, 0 filtered)
FILTERS: type=ML:func=_rt_boot:depth=*; type=*:func__f90_esfw:depth=*;
type=ML:func=__f90_ssfw:depth=*; 

Discover 出力は、初期化されていないメモリーが使用された場所、およびそのメモリーが割り当てられた場所を、結果の概要とともに示します。