次の方法で共有


オブジェクト ダンプのカスタマイズ

更新 : 2007 年 11 月

このトピックの内容は、次の製品に該当します。

Edition

Visual Basic

C#

C++

Web Developer

Express

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Standard

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro/Team

トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

表の凡例 :

トピック該当

対象

トピック該当なし

該当なし

トピックは該当しますが、コマンドは既定では非表示です

既定で非表示のコマンド

CObject から派生クラスを作成するときに Dump メンバ関数をオーバーライドすると、DumpAllObjectsSince を使用して [出力] ウィンドウにオブジェクトをダンプするときに、追加情報を取得できます。

Dump 関数は、オブジェクトのメンバ変数の内容をテキスト形式でダンプ コンテキスト (CDumpContext) に書き込みます。ダンプ コンテキストは、入出力ストリームに類似しています。CDumpContext にデータを送るには、ストリーム演算子 (<<) を使用します。

Dump 関数をオーバーライドするときは、まず基本クラスの Dump を呼び出して、基本クラスのオブジェクトの内容をダンプします。その後、派生クラスの各メンバ変数について、テキスト形式の説明と値を出力します。

Dump 関数の宣言例を次に示します。

class CPerson : public CObject
{
public:
#ifdef _DEBUG
    virtual void Dump( CDumpContext& dc ) const;
#endif

    CString m_firstName;
    CString m_lastName;
    // And so on...
};

オブジェクトのダンプは、プログラムをデバッグする場合にだけ必要です。したがって、Dump 関数の宣言は #ifdef _DEBUG#endif で囲みます。

次の例の Dump 関数は、まず基本クラスの Dump 関数を呼び出します。その後、各メンバ変数の簡単な説明を各メンバの値と一緒に診断ストリームに書き込みます。

#ifdef _DEBUG
void CPerson::Dump( CDumpContext& dc ) const
{
    // Call the base class function first.
    CObject::Dump( dc );

    // Now do the stuff for our specific class.
    dc << "last name: " << m_lastName << "\n"
        << "first name: " << m_firstName << "\n";
}
#endif

ダンプの出力先を指定するために、CDumpContext に引数を渡す必要があります。MFC のデバッグ バージョンでは、afxDump という定義済みの CDumpContext オブジェクトを渡して、出力をデバッガに送ります。

CPerson* pMyPerson = new CPerson;
// Set some fields of the CPerson object.
//...
// Now dump the contents.
#ifdef _DEBUG
pMyPerson->Dump( afxDump );
#endif

参照

概念

オブジェクト ダンプ

その他の技術情報

TRACE マクロ