診断サービス

Microsoft Foundation クラス ライブラリは、簡単にプログラムのデバッグをする多くの診断サービスを提供します。これらの診断サービスには、マクロとは、割り当て、実行時に、オブジェクトの内容をダンプし、実行時にデバッグ メッセージを印刷、プログラムのメモリを追跡するグローバル関数が含まれます。診断サービスのグローバル関数とマクロは、次のカテゴリにグループ化されています:

これらのマクロや関数のデバッグとリリース バージョンの MFC でのCObjectから派生したすべてのクラスをご利用いただけます。ただし、 DEBUG_NEW確認を除くすべてのリリース バージョンでないです。

デバッグ ライブラリでは、すべての割り当てられたメモリ ブロックは「ガード バイト数」シリーズに囲まれていますこれらのバイトは誤ったメモリ書き込みによって迷惑をかけられる場合は、診断ルーチンに問題を報告できます。場合は、行を含める

# define 新しい DEBUG_NEW

実装ファイルに、新しいすべての呼び出しでメモリ割り当てが行われたファイル名と行番号を保存します。関数CMemoryState::DumpAllObjectsSinceは、メモリ リークを特定することができますこの追加情報が表示されます。またCDumpContextクラス診断出力の関連情報を参照してください。

さらに、C のランタイム ライブラリも、あなたのアプリケーションのデバッグに使用できる診断関数のセットをサポートします。詳細についてを参照してください デバッグ ルーチンランタイム ライブラリ リファレンス

MFC の一般的な診断マクロ

アサート メッセージを印刷し、指定された式をライブラリのデバッグ バージョンでがFALSEに評価される場合、プログラムを中止。
ASSERT_KINDOF 指定したクラスから派生したクラスの指定したクラスのオブジェクトは、オブジェクトのテスト。
ASSERT_VALID オブジェクトの内部妥当性は、 AssertValid関数を呼び出すことによってテスト;CObjectから通常オーバーライド。
DEBUG_NEW メモリ リークを見つけるために、ファイル名と行番号デバッグ モードでのすべてのオブジェクトの割り当てを提供します。
トレース Printfを提供-ライブラリのデバッグ バージョンでの機能のように。
TRACE0 トレースが、フォーマット文字列引数なしではのような。
TRACE1 トレースが、形式文字列を 1 つの引数を取るような。
TRACE2 トレースが、フォーマット文字列の 2 つの引数を取るような。
TRACE3 トレースが、フォーマット文字列の 3 つの引数を取るような。
確認します ASSERTに似ていますが、同様のデバッグ バージョンのライブラリのリリース バージョンで式を評価。

MFC の一般的な診断変数と関数

afxDump CDumpContext情報、デバッガーの出力ウィンドウやデバッグ ターミナル送信グローバル変数。
afxMemDF デバッグ メモリ アロケーターの動作を制御するグローバル変数。
afxTraceEnabled グローバル変数の使用を有効にするまたはトレースマクロの出力を無効に。
afxTraceFlags MFC の組み込みのレポート機能を有効にするグローバル変数。
AfxCheckError グローバル変数が渡されたテストするために使用 エラーの場合、その場合を参照してくださいするには、 SCODEを適切なエラーをスロー。
AfxCheckMemory すべての整合性は現在メモリ割り当てチェックします。
AfxDump デバッガーで呼び出された場合、オブジェクトの状態は、デバッグ中ダンプします。
AfxDumpStack 現在のスタックのイメージを生成します。この関数は、常に静的にリンクされています。
AfxEnableMemoryTracking メモリ トラッキングのオンとオフになります。
AfxIsMemoryBlock メモリ ブロックが正しく割り当てられていることを確認します。
AfxIsValidAddress メモリのアドレス範囲はプログラムの境界内にあることを確認します。
AfxIsValidString 文字列へのポインターが有効かどうかを決定します。
AfxSetAllocHook 各メモリ割り当て関数の呼び出しを有効に。

MFC オブジェクトの診断機能

AfxDoForAllClasses すべてCObjectを指定された関数を実行-実行時の型チェックをサポートするクラスの派生。
AfxDoForAllObjects すべてCObjectを指定された関数を実行-新しいで割り当てられたオブジェクトの派生元。

Index