DebugroutinenDebug routines

Die Debugversion der C-Laufzeitbibliothek stellt viele Diagnosedienste bereit, die das Debuggen von Programmen vereinfachen und Entwicklern Folgendes ermöglichen:The debug version of the C runtime library supplies many diagnostic services that make debugging programs easier and allow developers to:

  • Ausführen von einzelnen Schritten direkt in die Laufzeitfunktionen während des DebuggensStep directly into run-time functions during debugging

  • Beheben von Assertionen, Fehlern und AusnahmenResolve assertions, errors, and exceptions

  • Nachverfolgen von Heapzuordnungen und Verhindern von SpeicherverlustenTrace heap allocations and prevent memory leaks

  • Übermitteln von Debugmeldungen an den BenutzerReport debug messages to the user

Debugversionen der C-LaufzeitbibliotheksroutinenDebug versions of the C runtime library routines

Um diese Routinen zu verwenden, muss das _DEBUG-Flag definiert werden.To use these routines, the _DEBUG flag must be defined. Alle diese Routinen führen in einer Verkaufsversion einer Anwendung keine Aktionen aus.All of these routines do nothing in a retail build of an application. Weitere Informationen zur Verwendung der neuen Debugroutinen finden Sie unter CRT Debugging Techniques (CRT-Debugverfahren).For more information on how to use the new debug routines, see CRT Debugging Techniques.

-Routine zurückgegebener WertRoutine VerwendungUse
_ASSERT_ASSERT Wertet einen Ausdruck aus und erzeugt einen Debugbericht, wenn das Ergebnis "FALSE" lautet.Evaluate an expression and generates a debug report when the result is FALSE
_ASSERTE_ASSERTE Ähnlich wie _ASSERT, schließt jedoch den fehlgeschlagenen Ausdruck im generierten Bericht ein.Similar to _ASSERT, but includes the failed expression in the generated report
_CrtCheckMemory_CrtCheckMemory Bestätigt die Integrität der Speicherblöcke, die im Debugheap zugeordnet werden.Confirm the integrity of the memory blocks allocated on the debug heap
_CrtDbgBreak_CrtDbgBreak Legt einen Haltepunkt fest.Sets a break point.
_CrtDbgReport, _CrtDbgReportW_CrtDbgReport, _CrtDbgReportW Generiert einen Debugbericht mit einer Benutzermeldung und sendet den Bericht an drei mögliche Ziele.Generate a debug report with a user message and send the report to three possible destinations
_CrtDoForAllClientObjects_CrtDoForAllClientObjects Ruft eine von der Anwendung bereitgestellte Funktion für alle _CLIENT_BLOCK-Typen auf dem Heap aufCall an application-supplied function for all _CLIENT_BLOCK types on the heap
_CrtDumpMemoryLeaks_CrtDumpMemoryLeaks Gibt alle Speicherblöcke im Debugheap aus, wenn ein bedeutender Speicherverlust aufgetreten ist.Dump all of the memory blocks on the debug heap when a significant memory leak has occurred
_CrtIsMemoryBlock_CrtIsMemoryBlock Überprüft, ob sich ein angegebener Speicherblock im lokalen Heap befindet und ob er einen gültigen Debugheap-Blocktypbezeichner hat.Verify that a specified memory block is located within the local heap and that it has a valid debug heap block type identifier
_CrtIsValidHeapPointer_CrtIsValidHeapPointer Überprüft, ob sich ein angegebener Zeiger im lokalen Heap befindet.Verifies that a specified pointer is in the local heap
_CrtIsValidPointer_CrtIsValidPointer Überprüft, ob ein bestimmter Speicherbereich für Lese- und Schreibvorgänge gültig ist.Verify that a specified memory range is valid for reading and writing
_CrtMemCheckpoint_CrtMemCheckpoint Ruft den aktuellen Zustand des Debugheaps ab und speichert ihn in einer von der Anwendung bereitgestellten _CrtMemState-Struktur.Obtain the current state of the debug heap and store it in an application-supplied _CrtMemState structure
_CrtMemDifference_CrtMemDifference Vergleicht zwei Speicherzustände für wesentliche Unterschiede und gibt die Ergebnisse zurück.Compare two memory states for significant differences and return the results
_CrtMemDumpAllObjectsSince_CrtMemDumpAllObjectsSince Gibt Informationen über Objekte auf dem Heap aus, seit ein angegebener Prüfpunkt übernommen wurde oder ab Beginn der Programmausführung.Dump information about objects on the heap since a specified checkpoint was taken or from the start of program execution
_CrtMemDumpStatistics_CrtMemDumpStatistics Gibt die Debugheaderinformationen für einen angegebenen Speicherzustand in einer für den Benutzer lesbaren Form aus.Dump the debug header information for a specified memory state in a user-readable form
_CrtReportBlockType_CrtReportBlockType Gibt den Blocktyp/den Untertyp zurück, der einem angegebenen Debugheapblockzeiger zugeordnet ist.Returns the block type/subtype associated with a given debug heap block pointer.
_CrtSetAllocHook_CrtSetAllocHook Installiert eine clientdefinierte Zuordnungsfunktion, indem sie mit dem Debug-Speicherbelegungsprozess der C-Laufzeit verknüpft wird.Install a client-defined allocation function by hooking it into the C run-time debug memory allocation process
_CrtSetBreakAlloc_CrtSetBreakAlloc Legt einen Haltepunkt an einer angegebenen Befehlsnummer der Objektzuordnung fest.Set a breakpoint on a specified object allocation order number
_CrtSetDbgFlag_CrtSetDbgFlag Ruft den Zustand des _crtDbgFlag-Flags ab oder ändert ihn, um das Zuordnungsverhalten vom Debugheap-Manager zu steuern.Retrieve or modify the state of the _crtDbgFlag flag to control the allocation behavior of the debug heap manager
_CrtSetDumpClient_CrtSetDumpClient Installiert eine anwendungsdefinierte Funktion, die bei jedem Aufruf einer Debugdumpfunktion aufgerufen wird, um _CLIENT_BLOCK-Typspeicherblöcke auszugeben.Install an application-defined function that is called every time a debug dump function is called to dump _CLIENT_BLOCK type memory blocks
_CrtSetReportFile_CrtSetReportFile Identifiziert die als Ziel für einen bestimmten Berichtstyp von _CrtDbgReport zu verwendende Datei bzw. Stream.Identify the file or stream to be used as a destination for a specific report type by _CrtDbgReport
_CrtSetReportHook_CrtSetReportHook Installiert eine clientdefinierte Berichtsfunktion, indem sie mit dem Debug-Berichterstellungsprozess der C-Laufzeit verknüpft wird.Install a client-defined reporting function by hooking it into the C run-time debug reporting process
_CrtSetReportHook2, _CrtSetReportHookW2_CrtSetReportHook2, _CrtSetReportHookW2 Installiert bzw. deinstalliert eine clientdefinierte Berichtsfunktion, indem sie mit dem Debug-Berichterstellungsprozess der C-Laufzeit verknüpft wird.Installs or uninstalls a client-defined reporting function by hooking it into the C run-time debug reporting process.
_CrtSetReportMode_CrtSetReportMode Gibt die allgemeinen Ziele für einen bestimmten Berichtstyp an, der von _CrtDbgReport generiert wird.Specify the general destination(s) for a specific report type generated by _CrtDbgReport
_RPT[0,1,2,3,4]_RPT[0,1,2,3,4] Verfolgt den Status der Anwendung durch Generieren eines Debugberichts, indem _CrtDbgReport mit einer Formatzeichenfolge und einer variablen Anzahl von Argumenten aufgerufen wird.Track the application's progress by generating a debug report by calling _CrtDbgReport with a format string and a variable number of arguments. Stellt keine Quelldatei und Zeilennummern bereit.Provides no source file and line number information.
_RPTF[0,1,2,3,4]_RPTF[0,1,2,3,4] Ähnlich den _RPTn-Makros, jedoch werden der Quelldateiname und die Zeilennummer bereitgestellt, aus denen die Berichtsanforderung stammt.Similar to the _RPTn macros, but provides the source file name and line number where the report request originated
_calloc_dbg_calloc_dbg Ordnet eine bestimmte Anzahl von Speicherblöcken auf dem Heap mit zusätzlichem Speicher für einen Debugheader und Überschreibungspuffer zu.Allocate a specified number of memory blocks on the heap with additional space for a debugging header and overwrite buffers
_expand_dbg_expand_dbg Ändert die Größe eines angegebenen Speicherblocks auf dem Heap, indem der Block erweitert oder verkleinert wird.Resize a specified block of memory on the heap by expanding or contracting the block
_free_dbg_free_dbg Gibt einen Speicherblock auf dem Heap frei.Free a block of memory on the heap
_fullpath_dbg, _wfullpath_dbg_fullpath_dbg, _wfullpath_dbg Erstellt mithilfe von _malloc_dbg einen absoluten oder vollständigen Pfadnamen für den angegebenen relativen Pfadnamen, um Speicher zu belegen.Create an absolute or full path name for the specified relative path name, using _malloc_dbg to allocate memory.
_getcwd_dbg, _wgetcwd_dbg_getcwd_dbg, _wgetcwd_dbg Ruft das aktuelle Arbeitsverzeichnis mithilfe von _malloc_dbg ab, um Speicher zu belegen.Get the current working directory, using _malloc_dbg to allocate memory.
_malloc_dbg_malloc_dbg Ordnet einen Speicherblock auf dem Heap mit zusätzlichem Speicher für einen Debugheader und Überschreibungspuffer zu.Allocate a block of memory on the heap with additional space for a debugging header and overwrite buffers
_msize_dbg_msize_dbg Berechnet die Größe eines Speicherblocks auf dem Heap.Calculate the size of a block of memory on the heap
_realloc_dbg_realloc_dbg Ordnet einen angegebenen Speicherblock auf dem Heap neu zu, indem der Block verschoben und/oder seine Größe geändert wird.Reallocate a specified block of memory on the heap by moving and/or resizing the block
_strdup_dbg, _wcsdup_dbg_strdup_dbg, _wcsdup_dbg Dupliziert eine Zeichenfolge mithilfe von _malloc_dbg, um Speicher zu belegen.Duplicates a string, using _malloc_dbg to allocate memory.
_tempnam_dbg, _wtempnam_dbg_tempnam_dbg, _wtempnam_dbg Generiert Namen, die Sie mithilfe von _malloc_dbg zum Erstellen von temporären Dateien verwenden können, um Speicher zu belegen.Generate names you can use to create temporary files, using _malloc_dbg to allocate memory.

C-Laufzeitroutinen, die nicht im Quellcodeformat verfügbar sindC runtime routines that are not available in source code form

Der Debugger kann verwendet werden, um den Quellcode für die meisten C-Laufzeitroutinen während des Debugprozesses schrittweise auszuführen.The debugger can be used to step through the source code for most of the C runtime routines during the debugging process. Allerdings erachtet Microsoft einige Technologien als proprietär und stellt daher keinen Quellcode für einen Teil dieser Routinen bereit.However, Microsoft considers some technology to be proprietary and, therefore, does not provide the source code for a subset of these routines. Die meisten dieser Routinen gehören zur Ausnahmebehandlung oder zu den Gruppen der Gleitkommaverarbeitung, einige andere werden jedoch ebenfalls eingeschlossen.Most of these routines belong to either the exception handling or floating-point processing groups, but a few others are included as well. In der folgenden Tabelle sind diese Routinen aufgeführt.The following table lists these routines.

acosacos acoshacosh asinasin
asinhasinh atan, atan2atan, atan2 atanhatanh
Bessel-FunktionenBessel functions _cabs_cabs ceilceil
_chgsign_chgsign _clear87, _clearfp_clear87, _clearfp _control87, _controlfp_control87, _controlfp
copysigncopysign coscos coshcosh
ExpExp fabsfabs _finite_finite
floorfloor fmodfmod _fpclass_fpclass
_fpieee_flt_fpieee_flt _fpreset_fpreset frexpfrexp
_hypot_hypot _isnan_isnan ldexpldexp
loglog _logb_logb log10log10
longjmplongjmp _matherr_matherr modfmodf
_nextafter_nextafter powpow printf_sprintf_s
printfprintf _scalb_scalb scanf_sscanf_s
scanfscanf setjmpsetjmp sinsin
sinhsinh sqrtsqrt _status87, _statusfp_status87, _statusfp
tantan tanhtanh

Obwohl Quellcode für die meisten dieser printf- und scanf-Routinen verfügbar ist, rufen sie intern eine andere Routine auf, für die kein Quellcode bereitgestellt wird.Although source code is available for most of the printf and scanf routines, they make an internal call to another routine for which source code is not provided.

Routinen, die sich in einem Debugbuild einer Anwendung unterschiedlich verhaltenRoutines that behave differently in a debug build of an application

Einige C-Laufzeitfunktionen und C++-Operatoren verhalten sich unterschiedlich, wenn sie von einem Debugbuild einer Anwendung aufgerufen werden.Some C run-time functions and C++ operators behave differently when called from a debug build of an application. (Beachten Sie, dass ein Debugbuild einer Anwendung erfolgen kann, indem das _DEBUG-Flag definiert wird oder indem eine Verknüpfung mit einer Debugversion der C-Laufzeitbibliothek erstellt wird.) Die Verhaltensunterschiede bestehen normalerweise aus zusätzlichen Funktionen oder aus Informationen, die von der Routine zur Unterstützung des Debugprozesses bereitgestellt werden.(Note that a debug build of an application can be done by either defining the _DEBUG flag or by linking with a debug version of the C run-time library.) The behavioral differences usually consist of extra features or information provided by the routine to support the debugging process. In der folgenden Tabelle sind diese Routinen aufgeführt.The following table lists these routines.

C-Routine abortC abort routine C++-Operator deleteC++ delete operator
C-Routine assertC assert routine C++-Operator newC++ new operator

Siehe auchSee also

Universelle C-Laufzeitroutinen nach KategorieUniversal C runtime routines by category
LaufzeitfehlerüberprüfungRun-Time Error Checking