Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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