Share via


CDumpContext-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Ondersteunt streamgeoriënteerde diagnostische uitvoer in de vorm van door mensen leesbare tekst.

Syntaxis

class CDumpContext

Leden

Openbare constructors

Naam Description
CDumpContext::CDumpContext Maakt een CDumpContext object.

Openbare methoden

Naam Description
CDumpContext::D umpAsHex Dumpt het aangegeven item in hexadecimale notatie.
CDumpContext::Flush Hiermee worden alle gegevens in de dumpcontextbuffer leeggemaakt.
CDumpContext::GetDepth Hiermee haalt u een geheel getal op dat overeenkomt met de diepte van de dump.
CDumpContext::HexDump Dumps bytes in een matrix in hexadecimale indeling.
CDumpContext::SetDepth Hiermee stelt u de diepte van de dump in.

Openbare operators

Naam Description
CDumpContext::operator << Voegt variabelen en objecten in de dumpcontext in.

Opmerkingen

CDumpContext heeft geen basisklasse.

U kunt afxDump, een vooraf declaratieobject CDumpContext , gebruiken voor het grootste deel van uw dumping. Het afxDump object is alleen beschikbaar in de foutopsporingsversie van de Microsoft Foundation Class Library.

Verschillende diagnostische geheugenservices gebruiken afxDump voor hun uitvoer.

Onder de Windows-omgeving wordt de uitvoer van het vooraf gedefinieerde afxDump object, conceptueel vergelijkbaar met de cerr stroom, gerouteerd naar het foutopsporingsprogramma via de Windows-functie OutputDebugString.

De CDumpContext klasse heeft een overbelaste invoegingsoperator ( <<) voor CObject aanwijzers die de gegevens van het object dumpen. Als u een aangepaste dumpindeling voor een afgeleid object nodig hebt, overschrijft u CObject::D ump. De meeste Microsoft Foundation-klassen implementeren een overschreven Dump lidfunctie.

Klassen die niet zijn afgeleid van CObject, zoals CString, CTimeen CTimeSpan, hebben hun eigen overbelaste CDumpContext invoegingsoperatoren, zoals vaak gebruikte structuren zoals CFileStatus, CPointen CRect.

Als u de IMPLEMENT_DYNAMIC of IMPLEMENT_SERIAL macro in de implementatie van uw klas gebruikt, CObject::Dump wordt de naam van de CObjectafgeleide klasse afgedrukt. Anders wordt het afgedrukt CObject.

De CDumpContext klasse is beschikbaar met zowel de foutopsporings- als releaseversies van de bibliotheek, maar de Dump lidfunctie is alleen gedefinieerd in de foutopsporingsversie. Gebruik #ifdef _DEBUG / #endif instructies om uw diagnostische code tussen haakjes te zetten, inclusief uw aangepaste Dump lidfuncties.

Voordat u uw eigen CDumpContext object maakt, moet u een CFile object maken dat fungeert als de dumpbestemming.

Zie CDumpContextvoor meer informatie over .

#define _DEBUG

Overnamehiërarchie

CDumpContext

Requirements

koptekst: afx.h

CDumpContext::CDumpContext

Maakt een object van klasse CDumpContext.

CDumpContext(CFile* pFile = NULL);

Parameterwaarden

pFile
Een aanwijzer naar het CFile object dat de dumpbestemming is.

Opmerkingen

Het afxDump object wordt automatisch samengesteld.

Schrijf niet naar de onderliggende CFile gegevens terwijl de dumpcontext actief is. Anders verstoort u de dump. Onder de Windows-omgeving wordt de uitvoer doorgestuurd naar het foutopsporingsprogramma via de Windows-functie OutputDebugString.

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

Dumpt het opgegeven type dat is opgemaakt als hexadecimale getallen.

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

Retourwaarde

Een verwijzing naar een CDumpContext object.

Opmerkingen

Roep deze lidfunctie aan om het item van het opgegeven type te dumpen als een hexadecimaal getal. Als u een matrix wilt dumpen, roept u CDumpContext::HexDump aan.

Example

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

CDumpContext::Flush

Dwingt de resterende gegevens in buffers af te schrijven naar het bestand dat is gekoppeld aan de dumpcontext.

void Flush();

Example

#if _DEBUG
afxDump.Flush();
#endif

CDumpContext::GetDepth

Bepaalt of een diepe of ondiepe dump wordt verwerkt.

int GetDepth() const;

Retourwaarde

De diepte van de dump zoals ingesteld door SetDepth.

Example

Zie het voorbeeld voor SetDepth.

CDumpContext::HexDump

Dumpt een matrix van bytes die zijn opgemaakt als hexadecimale getallen.

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

Parameterwaarden

lpszLine
Een tekenreeks die moet worden uitgevoerd aan het begin van een nieuwe regel.

pby
Een aanwijzer naar een buffer met de bytes die moeten worden gedumpt.

nBytes
Het aantal bytes dat moet worden gedumpt.

nWidth
Maximum aantal bytes gedumpt per regel (niet de breedte van de uitvoerregel).

Opmerkingen

Als u één specifiek itemtype wilt dumpen als een hexadecimaal nummer, roept u CDumpContext::D umpAsHex aan.

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

Voert de opgegeven gegevens uit naar de dumpcontext.

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

Retourwaarde

Een CDumpContext verwijzing. Met behulp van de retourwaarde kunt u meerdere invoegingen schrijven op één regel broncode.

Opmerkingen

De invoegoperator is overbelast voor CObject aanwijzers en voor de meeste primitieve typen. Een aanwijzer naar teken resulteert in een dump van tekenreeksinhoud; een aanwijzer naar void resultaten in een hexadecimale dump van het adres alleen. Een LONGLONG resulteert in een dump van een 64-bits ondertekend geheel getal; Een ULONGLONG resulteert in een dump van een 64-bits geheel getal zonder teken.

Als u de IMPLEMENT_DYNAMIC of IMPLEMENT_SERIAL macro gebruikt in de implementatie van uw klasse, drukt de invoegoperator, via CObject::Dump, de naam van uw CObjectafgeleide klasse af. Anders wordt het afgedrukt CObject. Als u de Dump functie van de klasse overschrijft, kunt u een zinvollere uitvoer van de inhoud van het object opgeven in plaats van een hexadecimale dump.

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

Hiermee stelt u de diepte voor de dump in.

void SetDepth(int nNewDepth);

Parameterwaarden

nNewDepth
De nieuwe dieptewaarde.

Opmerkingen

Als u een primitief type of eenvoudig CObject dumpt dat geen aanwijzers naar andere objecten bevat, is een waarde van 0 voldoende. Een waarde groter dan 0 geeft een diepe dump aan waarbij alle objecten recursief worden gedumpt. Een diepe dump van een verzameling dumpt bijvoorbeeld alle elementen van de verzameling. U kunt andere specifieke dieptewaarden in uw afgeleide klassen gebruiken.

Opmerking

Kringverwijzingen worden niet gedetecteerd in diepe dumps en kunnen resulteren in oneindige lussen.

Example

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

Zie ook

Hiërarchiegrafiek
CFile-klasse
CObject-klasse