Megosztás a következőn keresztül:


CDumpContext osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Támogatja a stream-orientált diagnosztikai kimenetet emberi olvasható szöveg formájában.

Szemantika

class CDumpContext

Tagok

Nyilvános konstruktorok

Név Description
CDumpContext::CDumpContext Egy CDumpContext objektumot hoz létre.

Nyilvános metódusok

Név Description
CDumpContext::D umpAsHex A megadott elemet hexadecimális formátumban dobja ki.
CDumpContext::Flush Kiüríti a memóriakép környezeti pufferében lévő összes adatot.
CDumpContext::GetDepth Lekéri a memóriakép mélységének megfelelő egész számot.
CDumpContext::HexDump Hexadecimális formátumú tömbben lévő bájtok memóriaképe.
CDumpContext::SetDepth Beállítja a memóriakép mélységét.

Nyilvános operátorok

Név Description
CDumpContext::operator << Változókat és objektumokat szúr be a memóriakép környezetébe.

Megjegyzések

CDumpContext nem rendelkezik alaposztálysal.

A memóriaképek többségéhez használhatja az afxDump objektumot, amely előre be van állítva CDumpContext . Az afxDump objektum csak a Microsoft Foundation osztálytár hibakeresési verziójában érhető el.

Számos memóriadiagnosztikai szolgáltatás használja afxDump a kimenetet.

A Windows-környezetben az előre definiált afxDump objektum kimenete a Streamhez cerr fogalmilag hasonló, a Windows függvényen OutputDebugStringkeresztül lesz átirányítva a hibakeresőhöz.

Az CDumpContext osztály túlterhelt beszúrási ( <<) operátorral rendelkezik az objektum adatait kihelyezett mutatókhoz CObject . Ha egyéni memóriaképformátumra van szüksége egy származtatott objektumhoz, felülbírálja a CObject::D ump parancsot. A Microsoft Foundation legtöbb osztálya egy felülírt tagfüggvényt Dump valósít meg.

Azok az osztályok, amelyek nem származnak például , és , saját túlterhelt CDumpContext beszúrási operátorokkal rendelkeznek, mint például a gyakran használt struktúrák, például CFileStatusa , CPointés CRect.CTimeSpanCTimeCStringCObject

Ha az osztály implementációjában a IMPLEMENT_DYNAMIC vagy IMPLEMENT_SERIAL makrót használja, akkor CObject::Dump kinyomtatja a származtatott osztály nevét CObject. Ellenkező esetben a program kinyomtatja CObject.

Az CDumpContext osztály a kódtár Hibakeresési és Kiadási verzióival is elérhető, de a Dump tagfüggvény csak a hibakeresési verzióban van definiálva. #ifdef _DEBUG utasítások használatával szögezheti a diagnosztikai kódot, beleértve az egyéni Dump tagfüggvényeket is. / #endif

A saját CDumpContext objektum létrehozása előtt létre kell hoznia egy CFile objektumot, amely a memóriakép célhelyeként szolgál.

További információ: CDumpContextMFC-alkalmazások hibakeresése.

#define _DEBUG

Öröklési hierarchia

CDumpContext

Requirements

Fejléc: afx.h

CDumpContext::CDumpContext

Osztályobjektumot CDumpContexthoz létre.

CDumpContext(CFile* pFile = NULL);

Paraméterek

pFile
Az objektumra mutató CFile mutató, amely a memóriakép célhelye.

Megjegyzések

Az afxDump objektum automatikusan létrejön.

Ne írjon az alapul szolgálóra CFile , amíg a memóriakép-környezet aktív, ellenkező esetben zavarja a memóriaképet. A Windows-környezetben a rendszer a Windows függvényen OutputDebugStringkeresztül irányítja a kimenetet a hibakeresőhöz.

Example

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

A megadott típust hexadecimális számként formázza.

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);

Visszaadott érték

Hivatkozás egy CDumpContext objektumra.

Megjegyzések

Hívja meg ezt a tagfüggvényt a megadott típus elemének hexadecimális számként való kiírásához. Tömb kiírásához hívja meg a CDumpContext::HexDump parancsot.

Example

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

CDumpContext::Flush

A pufferekben fennmaradó adatokat a memóriakép környezetéhez csatolt fájlba kell írni.

void Flush();

Example

#if _DEBUG
afxDump.Flush();
#endif

CDumpContext::GetDepth

Meghatározza, hogy folyamatban van-e mély vagy sekély memóriakép.

int GetDepth() const;

Visszaadott érték

A memóriakép mélysége a megadott módon SetDepth.

Example

Lásd a SetDepth példát.

CDumpContext::HexDump

Hexadecimális számként formázott bájtok tömbje.

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

Paraméterek

lpszLine
Egy sztring, amely egy új sor elején jelenik meg.

pby
Mutató egy pufferre, amely tartalmazza a memóriaképbe helyezendő bájtokat.

nBytes
A memóriaképbe foglalandó bájtok száma.

nWidth
Soronként kidobott bájtok maximális száma (nem a kimeneti sor szélessége).

Megjegyzések

Ha egy adott elemtípust hexadecimális számként szeretne kiírni, hívja meg a CDumpContext::D umpAsHex parancsot.

Example

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

CDumpContext::operator <<

A megadott adatokat a memóriakép környezetének adja ki.

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);

Visszaadott érték

Hivatkozás CDumpContext . A visszatérési érték használatával több beszúrást is írhat egyetlen forráskódsorra.

Megjegyzések

A beszúrási operátor túlterhelt a mutatók és CObject a legtöbb primitív típus esetében. A karakterre mutató mutató sztringtartalom-memóriaképet eredményez; egy mutató, amely void csak a cím hexadecimális memóriaképét eredményezi. A LONGLONG egy 64 bites aláírt egész számból álló memóriaképet eredményez; A ULONGLONG egy 64 bites, aláíratlan egész számból álló memóriaképet eredményez.

Ha az osztály implementációjában a IMPLEMENT_DYNAMIC vagy IMPLEMENT_SERIAL makrót használja, akkor a beszúrási operátor ezzel CObject::Dumpkinyomtatja a -származtatott osztály nevét CObject. Ellenkező esetben a program kinyomtatja CObject. Ha felülbírálja az Dump osztály függvényét, akkor a hexadecimális memóriakép helyett az objektum tartalmának jelentésesebb kimenetét is megadhatja.

Example

#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

Beállítja a memóriakép mélységét.

void SetDepth(int nNewDepth);

Paraméterek

nNewDepth
Az új mélységi érték.

Megjegyzések

Ha olyan primitív vagy egyszerű CObject típust dob ki, amely nem tartalmaz más objektumokra mutató mutatót, akkor a 0 érték elegendő. A 0-nál nagyobb érték egy mély memóriaképet ad meg, ahol az összes objektum rekurzív módon kerül kidobva. Egy gyűjtemény mélyképe például a gyűjtemény összes elemét ki fogja dobni. Más konkrét mélységi értékeket is használhat a származtatott osztályokban.

Megjegyzés:

A körkörös hivatkozások nem észlelhetők mély memóriaképekben, és végtelen hurkokat eredményezhetnek.

Example

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

Lásd még

hierarchiadiagram
CFile osztály
CObject osztály