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 OutputDebugString
aracı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 CString
CTime
türetilmemiş CObject
sınıfların, , ve CRect
CTimeSpan
gibi CFileStatus
CPoint
sı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 CObject
adı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 CDumpContext
daha 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 CDumpContext
nesnesini 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 OutputDebugString
aracı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 SetDepth
ayarlanan 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::Dump
türetilmiş sınıfınızın CObject
adı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