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 |
---|---|---|
Wertet einen Ausdruck aus und erzeugt einen Debugbericht, wenn das Ergebnis "FALSE" lautet. |
||
Ähnlich wie _ASSERT, schließt jedoch den fehlgeschlagenen Ausdruck im generierten Bericht ein. |
||
Bestätigt die Integrität der Speicherblöcke, die im Debugheap zugeordnet werden. |
||
Legt einen Haltepunkt fest. |
Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe. |
|
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 |
|
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. |
|
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. |
|
Ü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. |
|
Ü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. |
|
Ü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. |
|
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. |
|
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. |
|
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. |
|
Gibt die Debugheaderinformationen für einen angegebenen Speicherzustand in einer für den Benutzer lesbaren Form aus. |
||
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Ä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. |
|
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. |
|
Ä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. |
|
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. |
|
Erstellt mithilfe von _malloc_dbg einen absoluten oder vollständigen Pfadnamen für den angegebenen relativen Pfadnamen, um Speicher zu belegen. |
||
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. |
|
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. |
|
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. |
|
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. |
|
Dupliziert eine Zeichenfolge mithilfe von _malloc_dbg, um Speicher zu belegen. |
||
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
* 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 |