Aracılığıyla paylaş


CDumpContext Sınıfı

akış odaklı tanılama çıkışını insan tarafından okunabilir metin biçiminde destekler.

Sözdizimi

class CDumpContext

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CDumpContext::CDumpContext Bir CDumpContext nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CDumpContext::D umpAsHex Belirtilen öğeyi onaltılık biçimde dökümler.
CDumpContext::Flush Döküm bağlamı arabelleğindeki tüm verileri temizler.
CDumpContext::GetDepth Döküm derinliğine karşılık gelen bir tamsayı alır.
CDumpContext::HexDump Bir dizideki baytları onaltılık biçimde dökümler.
CDumpContext::SetDepth Döküm derinliğini ayarlar.

Ortak İşleçler

Veri Akışı Adı Açıklama
CDumpContext::operator << Döküm bağlamı içine değişkenleri ve nesneleri ekler.

Açıklamalar

CDumpContext temel sınıfına sahip değildir.

Dökümünüzün çoğu için önceden bildirilmiş CDumpContext bir nesne olan afxDump kullanabilirsiniz. afxDump nesnesi yalnızca Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümünde kullanılabilir.

Bellek tanılama hizmetlerinin birkaçı çıktıları için kullanılır afxDump .

Windows ortamı altında, kavramsal olarak akışa benzer şekilde önceden tanımlanmış afxDump nesneden cerr elde edilen çıkış, Windows işlevi OutputDebugStringaracılığıyla hata ayıklayıcıya yönlendirilir.

sınıfı, CDumpContext nesnenin verilerinin dökümünü alan işaretçiler için CObject aşırı yüklenmiş bir ekleme ( <<) işlecine sahiptir. Türetilmiş nesne için özel döküm biçimine ihtiyacınız varsa CObject::D ump'yi geçersiz kılın. Microsoft Foundation sınıflarının çoğu geçersiz kılınmış Dump bir üye işlevi uygular.

, , ve gibi CStringCTimetüretilmemiş CObjectsınıfların, , ve CRectCTimeSpangibi CFileStatusCPointsık kullanılan yapılar gibi kendi aşırı yüklenmiş CDumpContext ekleme işleçleri vardır.

Sınıfınızın uygulamasında IMPLEMENT_DYNAMIC veya IMPLEMENT_SERIAL makroyu kullanırsanız, CObject::Dump türetilmiş sınıfınızın CObjectadını yazdırır. Aksi takdirde, yazdırır CObject.

CDumpContext sınıfı, kitaplığın hem Hata Ayıklama hem de Yayın sürümleriyle kullanılabilir, ancak Dump üye işlevi yalnızca Hata Ayıklama sürümünde tanımlanır. Özel Dump üye işlevleriniz de dahil olmak üzere tanılama kodunuzu köşeli ayraç içine almak için #ifdef _DEBUG / #endif deyimlerini kullanın.

Kendi CDumpContext nesnenizi oluşturmadan önce döküm hedefi olarak hizmet veren bir CFile nesne oluşturmanız gerekir.

hakkında CDumpContextdaha fazla bilgi için bkz . MFC Uygulamalarında Hata Ayıklama.

#define _DEBUG

Devralma Hiyerarşisi

CDumpContext

Gereksinimler

Üst bilgi: afx.h

CDumpContext::CDumpContext

sınıfının CDumpContextnesnesini oluşturur.

CDumpContext(CFile* pFile = NULL);

Parametreler

pFile
Döküm hedefi olan nesnenin işaretçisi CFile .

Açıklamalar

afxDump Nesnesi otomatik olarak oluşturulur.

Döküm bağlamı etkinken temel alınana CFile yazmayın; aksi takdirde dökümü engellersiniz. Windows ortamı altında çıkış, Windows işlevi OutputDebugStringaracılığıyla hata ayıklayıcıya yönlendirilir.

Örnek

CFile f;
if (!f.Open(_T("dump.txt"), CFile::modeCreate | CFile::modeWrite))
{
   AFXDUMP(_T("Unable to open file\n"));
   exit(1);
}
CDumpContext dc(&f);

CDumpContext::D umpAsHex

Belirtilen türü onaltılık sayılar olarak biçimlendirir.

CDumpContext& DumpAsHex(BYTE b);
CDumpContext& DumpAsHex(DWORD dw);
CDumpContext& DumpAsHex(int n);
CDumpContext& DumpAsHex(LONG l);
CDumpContext& DumpAsHex(LONGLONG n);
CDumpContext& DumpAsHex(UINT u);
CDumpContext& DumpAsHex(ULONGLONG n);
CDumpContext& DumpAsHex(WORD w);

Dönüş Değeri

Bir nesneye CDumpContext başvuru.

Açıklamalar

Belirtilen türdeki öğeyi onaltılık sayı olarak dökümünü almak için bu üye işlevini çağırın. Dizi dökümü almak için CDumpContext::HexDump çağrısında bulunur.

Örnek

#if _DEBUG
afxDump.DumpAsHex(115);
#endif

CDumpContext::Flush

Arabelleklerde kalan tüm verilerin döküm bağlamı ekli dosyaya yazılması için zorlar.

void Flush();

Örnek

#if _DEBUG
afxDump.Flush();
#endif

CDumpContext::GetDepth

Derin veya sığ bir döküm işleminin devam edip etmediğini belirler.

int GetDepth() const;

Dönüş Değeri

tarafından SetDepthayarlanan döküm derinliği.

Örnek

SetDepth örneğine bakın.

CDumpContext::HexDump

Onaltılık sayı olarak biçimlendirilmiş bir bayt dizisinin dökümünü alır.

void HexDump(
    LPCTSTR lpszLine,
    BYTE* pby,
    int nBytes,
    int nWidth);

Parametreler

lpszLine
Yeni bir satırın başında çıkış için bir dize.

pby
Dökümü yapılan baytları içeren arabelleğe yönelik bir işaretçi.

nBayt
Dökümü atacak bayt sayısı.

nWidth
Satır başına atılan bayt sayısı üst sınırı (çıkış satırının genişliği değil).

Açıklamalar

Tek, belirli bir öğe türünü onaltılık numara olarak döküm etmek için CDumpContext::D umpAsHex öğesini çağırabilirsiniz.

Örnek

#if _DEBUG
TCHAR test[] = _T("This is a test of CDumpContext::HexDump\n");
afxDump.HexDump(_T("."), (BYTE *)test, sizeof(test), 20);
#endif

CDumpContext::operator <<

Belirtilen verileri döküm bağlamını oluşturur.

CDumpContext& operator<<(const CObject* pOb);
CDumpContext& operator<<(const CObject& ob);
CDumpContext& operator<<(LPCTSTR lpsz);
CDumpContext& operator<<(const void* lp);
CDumpContext& operator<<(BYTE by);
CDumpContext& operator<<(WORD w);
CDumpContext& operator<<(DWORD dw);
CDumpContext& operator<<(int n);
CDumpContext& operator<<(double d);
CDumpContext& operator<<(float f);
CDumpContext& operator<<(LONG l);
CDumpContext& operator<<(UINT u);
CDumpContext& operator<<(LPCWSTR lpsz);
CDumpContext& operator<<(LPCSTR lpsz);
CDumpContext& operator<<(LONGLONG n);
CDumpContext& operator<<(ULONGLONG n);
CDumpContext& operator<<(HWND h);
CDumpContext& operator<<(HDC h);
CDumpContext& operator<<(HMENU h);
CDumpContext& operator<<(HACCEL h);
CDumpContext& operator<<(HFONT h);

Dönüş Değeri

Bir CDumpContext başvuru. Dönüş değerini kullanarak, tek bir kaynak kodu satırına birden çok ekleme yazabilirsiniz.

Açıklamalar

Ekleme işleci hem işaretçiler hem CObject de çoğu temel tür için aşırı yüklenir. Karakter işaretçisi, dize içeriğinin dökümünü alır; işaretçisi void yalnızca adresin onaltılık dökümünü alır. LONGLONG, 64 bit imzalı bir tamsayının dökümünü verir; ULONGLONG, 64 bit işaretsiz tamsayı dökümüyle sonuçlanır.

Sınıfınızın uygulamasında IMPLEMENT_DYNAMIC veya IMPLEMENT_SERIAL makro kullanırsanız, aracılığıyla ekleme işleci CObject::Dumptüretilmiş sınıfınızın CObjectadını yazdırır. Aksi takdirde, yazdırır CObject. Sınıfının işlevini geçersiz kılarsanız Dump , nesnenin içeriğinin onaltılık döküm yerine daha anlamlı bir çıkışını sağlayabilirsiniz.

Örnek

#if _DEBUG
CStringList li;
li.AddHead(_T("item 0"));
li.AddHead(_T("item 1"));
CString s = _T("test");
int i = 7;
long lo = 1000000000L;
LONGLONG lolo = 12345678901234i64;
afxDump << _T("list=") << &li << _T("string=")
        << s << _T("int=") << i << _T("long=") << lo
        << _T("LONGLONG=") << lolo << _T("\n");
#endif

CDumpContext::SetDepth

Döküm derinliğini ayarlar.

void SetDepth(int nNewDepth);

Parametreler

nNewDepth
Yeni derinlik değeri.

Açıklamalar

Diğer nesnelere işaretçi içermeyen ilkel veya basit CObject bir tür dökümü kullanıyorsanız, 0 değeri yeterlidir. 0'dan büyük bir değer, tüm nesnelerin özyinelemeli olarak atıldığı derin dökümü belirtir. Örneğin, bir koleksiyonun ayrıntılı dökümü koleksiyonun tüm öğelerinin dökümünü alır. Türetilmiş sınıflarınızda diğer belirli derinlik değerlerini kullanabilirsiniz.

Not

Döngüsel başvurular derin dökümlerde algılanmaz ve sonsuz döngülere neden olabilir.

Örnek

#if _DEBUG
afxDump.SetDepth(1); // Specifies deep dump
ASSERT(afxDump.GetDepth() == 1);
#endif

Ayrıca bkz.

Hiyerarşi Grafiği
CFile Sınıfı
CObject Sınıfı