discover –i ADI ツール (または libdiscoverADI.so ライブラリ) は、SPARC M7 ハードウェアを利用してエラントコードの修正を容易にする、Oracle Developer Studio のセキュリティー機能です。これは、より早い段階で誤ったコードを検出することで、悪意のあるソフトウェア攻撃やその他のメモリー破損の問題を防止します。
このようなメモリー破壊を防止するために、discover ADI は本番コードに割り込んで、アプリケーションのメモリーポインタに割り当てられたバージョン番号または色をその内容のバージョン番号に関連付けられたポインタと照合して検査します。ポインタのバージョン番号と内容のバージョン番号が一致しない場合、discover ADI はエラーを報告します。このハードウェアアシスト検査により、ユーザーはバッファーオーバーフロー、解放されたポインタ、および無効なポインタのエラーを検出できます。discover ADI は次に、ユーザーが実行を続行する前にエラントコードを修正できるように、正確なソース行 (–g オプションを使用してコンパイルされた場合) およびエラーのスタックトレースを報告します。また、エラーの割り当てと解放ポイントスタックトレースも報告します。コードの計測や再構築の手順は必要ありません。詳細は、Oracle Developer Studio 12.5: Discover および Uncover ユーザーズガイド の Silicon Secured Memory (SSM) を使用したハードウェアアシスト検査を参照してください。
アプリケーションが独自のメモリーアロケータを備えていて、malloc() を呼び出さない場合、ユーザーは discover ADI ツールによって提供される新しい API を使用できます。これらの新しい API を表示するには、Oracle Developer Studio 12.5: Discover および Uncover ユーザーズガイド の カスタムメモリーアロケータおよび discover ADI ライブラリを参照してください。これらの API はまた、libdiscoverADI.so ライブラリまたは libaidiplugin.3 のマニュアルページでも使用できます。