Freigeben über


Debugroutinen

Die Debugversion der C-Laufzeitbibliothek stellt viele Diagnosedienste bereit, die das Debuggen von Programmen vereinfachen und Entwicklern Folgendes ermöglichen:

  • Ausführen von einzelnen Schritten direkt in die Laufzeitfunktionen während des Debuggens

  • Beheben von Assertionen, Fehlern und Ausnahmen

  • Nachverfolgen von Heapzuordnungen und Verhindern von Speicherverlusten

  • Übermitteln von Debugmeldungen an den Benutzer

Um diese Routinen zu verwenden, muss das _DEBUG-Flag definiert werden. Alle diese Routinen führen in einer Verkaufsversion einer Anwendung keine Aktionen aus. Weitere Informationen zur Verwendung der neuen Debugroutinen finden Sie unter CRT-Debugverfahren.

Debugversionen der C-Laufzeitbibliotheksroutinen

Routine

Verwendung

.NET Framework-Entsprechung

_ASSERT

Wertet einen Ausdruck aus und erzeugt einen Debugbericht, wenn das Ergebnis "FALSE" lautet.

System::Diagnostics::Debug::Assert

_ASSERTE

Ähnlich wie _ASSERT, schließt jedoch den fehlgeschlagenen Ausdruck im generierten Bericht ein.

System::Diagnostics::Debug::Assert

_CrtCheckMemory

Bestätigt die Integrität der Speicherblöcke, die im Debugheap zugeordnet werden.

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

Legt einen Haltepunkt fest.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtDbgReport, _CrtDbgReportW

Generiert einen Debugbericht mit einer Benutzermeldung und sendet den Bericht an drei mögliche Ziele.

System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf

_CrtDoForAllClientObjects

Ruft eine von der Anwendung bereitgestellte Funktion für alle _CLIENT_BLOCK-Typen auf dem Heap auf.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtDumpMemoryLeaks

Gibt alle Speicherblöcke im Debugheap aus, wenn ein bedeutender Speicherverlust aufgetreten ist.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtIsMemoryBlock

Überprüft, ob sich ein angegebener Speicherblock im lokalen Heap befindet und ob er einen gültigen Debugheap-Blocktypbezeichner hat.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtIsValidHeapPointer

Überprüft, ob sich ein angegebener Zeiger im lokalen Heap befindet.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtIsValidPointer

Überprüft, ob ein bestimmter Speicherbereich für Lese- und Schreibvorgänge gültig ist.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtMemCheckpoint

Ruft den aktuellen Zustand des Debugheaps ab und speichert ihn in einer von der Anwendung bereitgestellten _CrtMemState-Struktur.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtMemDifference

Vergleicht zwei Speicherzustände für wesentliche Unterschiede und gibt die Ergebnisse zurück.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtMemDumpAllObjectsSince

Gibt Informationen über Objekte auf dem Heap aus, seit ein angegebener Prüfpunkt übernommen wurde oder ab Beginn der Programmausführung.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtMemDumpStatistics

Gibt die Debugheaderinformationen für einen angegebenen Speicherzustand in einer für den Benutzer lesbaren Form aus.

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

Gibt den Blocktyp/den Untertyp zurück, der einem angegebenen Debugheapblockzeiger zugeordnet ist.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetAllocHook

Installiert eine clientdefinierte Zuordnungsfunktion, indem sie mit dem Debug-Speicherbelegungsprozess der C-Laufzeit verknüpft wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetBreakAlloc

Legt einen Haltepunkt an einer angegebenen Befehlsnummer der Objektzuordnung fest.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetDbgFlag

Ruft den Zustand des _crtDbgFlag-Flags ab oder ändert ihn, um das Zuordnungsverhalten des Debugheapmanagers zu steuern.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetDumpClient

Installiert eine anwendungsdefinierte Funktion, die bei jedem Aufruf einer Debugdumpfunktion aufgerufen wird, um _CLIENT_BLOCK-Typspeicherblöcke auszugeben.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetReportFile

Identifiziert die als Ziel für einen bestimmten Berichtstyp von _CrtDbgReport zu verwendende Datei bzw. Stream.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetReportHook

Installiert eine clientdefinierte Berichtsfunktion, indem sie mit dem Debug-Berichterstellungsprozess der C-Laufzeit verknüpft wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetReportHook2, _CrtSetReportHookW2

Installiert bzw. deinstalliert eine clientdefinierte Berichtsfunktion, indem sie mit dem Debug-Berichterstellungsprozess der C-Laufzeit verknüpft wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_CrtSetReportMode

Gibt die allgemeinen Ziele für einen bestimmten Berichtstyp an, der von _CrtDbgReport generiert wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_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. Stellt keine Quelldatei und Zeilennummern bereit.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_RPTF[0,1,2,3,4]

Ähnlich den _RPTn-Makros, jedoch werden der Quelldateiname und die Zeilennummer bereitgestellt, aus denen die Berichtsanforderung stammt.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_calloc_dbg

Ordnet eine bestimmte Anzahl von Speicherblöcken auf dem Heap mit zusätzlichem Speicher für einen Debugheader und Überschreibungspuffer zu.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_expand_dbg

Ändert die Größe eines angegebenen Speicherblocks auf dem Heap, indem der Block erweitert oder verkleinert wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_free_dbg

Gibt einen Speicherblock auf dem Heap frei.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

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

System::IO::File::Create

_getcwd_dbg, _wgetcwd_dbg

Ruft das aktuelle Arbeitsverzeichnis mithilfe von _malloc_dbg ab, um Speicher zu belegen.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_malloc_dbg

Ordnet einen Speicherblock auf dem Heap mit zusätzlichem Speicher für einen Debugheader und Überschreibungspuffer zu.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_msize_dbg

Berechnet die Größe eines Speicherblocks auf dem Heap.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_realloc_dbg

Ordnet einen angegebenen Speicherblock auf dem Heap neu zu, indem der Block verschoben und/oder seine Größe geändert wird.

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

_strdup_dbg, _wcsdup_dbg

Dupliziert eine Zeichenfolge mithilfe von _malloc_dbg, um Speicher zu belegen.

System::String::Clone

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

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Die Debugroutinen können verwendet werden, um den Quellcode für die meisten der anderen C-Laufzeitroutinen während des Debugprozesses schrittweise auszuführen. Allerdings erachtet Microsoft einige Technologien als proprietär und stellt daher keinen Quellcode für diese Routinen bereit. Die meisten dieser Routinen gehören zur Ausnahmebehandlung oder zu den Gruppen der Gleitkommaverarbeitung, einige andere werden jedoch ebenfalls eingeschlossen. In der folgenden Tabelle sind diese Routinen aufgeführt.

C-Laufzeitroutinen, die nicht in Quellcodeform verfügbar sind

acos, acosf, acosl

_fpclass

_nextafter

asin

_fpieee_flt

pow

atan, atan2

_fpreset

printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l*

_cabs

frexp

_scalb

ceil

_hypot

scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l*

_chgsign, _chgsignf, _chgsignl

_isnan

setjmp

_clear87, _clearfp

_j0

sin

_control87, _controlfp, __control87_2

_j1

sinh

copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl

_jn

sqrt

cos

ldexp

_status87, _statusfp

cosh

log

tan

Exp

log10

tanh

fabs

_logb

_y0

_finite

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

* Obwohl Quellcode für die meisten dieser Routinen verfügbar ist, ruft er intern eine andere Routine auf, für die kein Quellcode bereitgestellt wird.

Einige C-Laufzeitfunktionen und C++-Operatoren verhalten sich unterschiedlich, wenn sie von einem Debugbuild einer Anwendung aufgerufen werden. (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. In der folgenden Tabelle sind diese Routinen aufgeführt.

Routinen, die sich in einem Debugbuild einer Anwendung unterschiedlich verhalten

C-abort-Routine

C++-delete-Operator

C-assert-Routine

C++-new-Operator

Siehe auch

Referenz

Laufzeitroutinen nach Kategorie

Laufzeitfehlerüberprüfung