| 原作者 | ピュアソフトウェア |
|---|---|
| 開発者 | UNICOM Systems(UNICOM Globalの一部門) |
| 安定版リリース | 8.2 / 2024年9月20日 |
| オペレーティング·システム | Windows、Linux、Solaris の場合 |
| タイプ | メモリデバッガー |
| ライセンス | 独自ソフトウェア |
| Webサイト | www.teamblue.unicomsi.com/products/purifyplus/ |
PurifyPlusは、ソフトウェア開発者がCやC++で書かれたプログラムのメモリアクセスエラーを検出するために使用するメモリデバッガプログラムです。もともとはPure SoftwareのReed Hastings氏によって書かれました。[1] Pure Softwareは後にAtria Softwareと合併してPure Atria Softwareとなり、さらにRational Softwareに買収され、Rational SoftwareはIBMに買収され、 2014年12月31日にUNICOM Systems , Inc.に売却されました。機能的にはInsure++、Valgrind、 BoundsCheckerなどの他のメモリデバッガと同様です。
概要
PurifyPlus は、デバッガーのように、プログラムの実行時に発生するエラーを検出するプロセスである動的検証を可能にします。対照的に、静的検証または静的コード分析では、論理的な矛盾を検出するだけで、コンパイルまたは実行せずにソースコード内のエラーを検出します。Cコンパイラによる型チェックは、静的検証の例です。
プログラムをPurifyPlus にリンクすると、ライブラリを含むオブジェクト コードを解析して追加することで、修正された検証コードが実行ファイルに自動的に挿入されます。これにより、メモリ エラーが発生した場合、プログラムはエラーの正確な場所、関連するメモリ アドレス、およびその他の関連情報を出力します。PurifyPlus はメモリ リークも検出します。デフォルトでは、リーク レポートはプログラム終了時に生成されますが、インストルメントされたアプリケーション内から PurifyPlus リーク検出 API を呼び出すことによっても生成できます。
PurifyPlus が検出するエラーには、配列境界の読み取りと書き込み、割り当てられていないメモリへのアクセス、割り当てられていないメモリの解放 (通常、同じメモリを 2 度目に解放するため)、メモリ リーク (ポインタ参照のない割り当て済みメモリ) などがあります。これらのエラーのほとんどは致命的ではなく (少なくともエラーが発生した場所では)、プログラムを実行しているだけでは、プログラムの動作が間違っているために何かが間違っていることを観察する以外に、エラーを検出する方法がないことがよくあります。したがって、PurifyPlus はこれらのエラーを検出し、エラーが発生した場所を正確にプログラマに通知することで役立ちます。PurifyPlus はすべてのオブジェクトコードをインストルメント化することで機能するため、サードパーティまたはオペレーティング システムライブラリ内で発生するエラーを検出します。これらのエラーは、プログラマがライブラリ呼び出しに誤った引数を渡したり、ライブラリで使用されるデータ構造を解放するためのプロトコルについて誤解したりすることが原因であることがよくあります。これらは、見つけて修正するのが最も難しいエラーであることがよくあります。
従来のデバッガーとの違い
致命的ではないエラーを検出できる機能は、PurifyPlus と、通常のデバッガーからの類似プログラムとの大きな違いです。対照的に、デバッガーは通常、プログラマーが致命的なエラーの原因 (ヌルポインターの逆参照によるプログラム クラッシュなど) をすばやく見つけることしかできず、致命的ではないメモリ エラーの検出には役立ちません。デバッガーは、コードを 1 行ずつステップ実行したり、実行の特定の瞬間に手動でプログラムのメモリを調べたりするなど、PurifyPlus が想定していない他の用途にも役立ちます。言い換えれば、これらのツールは、熟練した開発者にとって互いに補完し合うことができます。
PurifyPlus には、コードに対してデバッガーを使用する際に一般的に役立つ、 高性能ウォッチポイントなどの他の機能も含まれています。
PurifyPlus の使用は、メモリ管理をプログラマーに任せているプログラミング言語で最も効果的であることは注目に値します。したがって、たとえばJava、Lisp、またはVisual Basicでは、自動メモリ管理によってメモリ リークの発生が軽減されます。ただし、これらの言語でもメモリ リークが発生する可能性はあります。オブジェクトへの不要な参照によってメモリの再割り当てが妨げられるからです。IBM には、このようなエラーを発見するための Rational Application Developer という製品があります。
サポートされているプラットフォーム
サポートされている C/C++ プラットフォーム
サポートされている Java/.NET プラットフォーム
参照
参考文献
- ^ Purify: メモリ リークとアクセス エラーの高速検出。Reed Hastings と Bob Joyce 著、Usenix Winter 1992 技術会議。
外部リンク
- アイオワ州立大学の高性能コンピューティング グループによる「シリアル ランタイム エラーを検出するシステムの調査」
