メモリーエラー探索ツール (discover) ソフトウェアは、メモリーアクセスエラーを検出するための高度な開発ツールです。discover ユーティリティーは、Sun Studio 12 Update 1、Oracle Solaris Studio 12.2-12.4、または Oracle Developer Studio 12.5 コンパイラでコンパイルされたバイナリ上で動作します。少なくとも Solaris 10 10/11、Oracle Solaris 11.3、Oracle Enterprise Linux 6.x、Oracle Enterprise Linux 7.x の各オペレーティングシステムのいずれかを実行している SPARC ベースまたは x86 ベースのシステム上で動作します。
プログラムのメモリー関連のエラーは、検出が難しいことで知られています。discover ユーティリティーを使用すると、ソースコードに存在している問題の正確な場所を指摘することによって、このようなエラーを簡単に検出できます。たとえば、プログラムが配列を割り当てたが、それを初期化せずに、ある配列の場所から読み取ろうとする場合、プログラムの動作が不安定になることがあります。discover ユーティリティーは、通常の方法でプログラムを実行するときに、この問題を検出できます。
discover によって検出されるほかのエラーには、次のものがあります。
非割り当てメモリーからの読み取り、および非割り当てメモリーへの書き込み
割り当て済み配列範囲外のメモリーへのアクセス
解放されたメモリーの不正使用
不正なメモリーブロックの解放
同じメモリーブロックの複数回の解放
メモリーリーク
重複するメモリーコピー
無効なポインタによるアクセス
システムライブラリ関数に対する正しくないパラメータ
discover はプログラムの実行中にメモリーアクセスエラーを動的に検出して報告するため、実行時にユーザーコードの一部が実行されない場合、その部分のエラーは報告されません。
discover ユーティリティーは簡単に使用できます。すべてのバイナリは (完全に最適化されたバイナリでも)、単一のコマンドを使用して計測し、通常の方法で実行できます。バイナリを計測するための最善の方法については、サポートされるバイナリを参照してください。discover は実行中にメモリー異常のレポートを生成します。これはテキストファイル形式で、または Web ブラウザに HTML 形式で表示できます。