Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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