Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Symbolen können Sie Token, die vom zu debuggenden Programm verwendet werden, direkt bearbeiten. Sie können z. B. einen Haltepunkt am Funktionshauptpunkt mit dem Befehl bp main festlegen oder die ganzzahlige Variable MyInt mit dem Befehl dd MyInt L1 anzeigen.
In vielen Fällen können Symbole als Parameter in Debuggerbefehlen verwendet werden. Dies wird für die meisten numerischen Parameter unterstützt und wird auch in einigen Textparametern unterstützt. Zusätzlich zu allgemeinen Regeln für die Symbolsyntax gibt es auch Regeln für die Symbolsyntax, die in jedem dieser Fälle gelten.
Allgemeine Regeln für die Symbolsyntax
Ein Symbolname besteht aus einem oder mehreren Zeichen, beginnt aber immer mit einem Buchstaben, Unterstrich (
Ein Symbolname kann durch einen Modulnamen qualifiziert werden. Ein Ausrufezeichen (!) trennt den Modulnamen vom Symbol (z. B. mymodule!main). Wenn kein Modulname verwendet wird, kann dem Symbol weiterhin ein Ausrufezeichen vorangestellt werden. Die Verwendung eines Ausrufezeichens ohne Modulnamen kann besonders nützlich sein, auch für lokale Variablen, um für einen Debuggerbefehl anzugeben, dass ein Parameter ein Name und keine Hexadezimalzahl ist. Die Variable fade wird beispielsweise vom Befehl dt (Anzeigetyp) als Adresse gelesen, es sei denn, sie ist mit einem Ausrufezeichen versehen oder die Option -n wird verwendet. Um jedoch anzugeben, dass ein Symbol lokal ist, stellen Sie ihm ein Dollarzeichen ( $ ) und ein Ausrufezeichen ( ! ) wie in $!Lime voran.
Bei Symbolnamen wird die Groß-/Kleinschreibung vollständig ignoriert. Dies bedeutet, dass das Vorhandensein eines myInt und eines MyInt in Ihrem Programm nicht richtig von den Debuggern verstanden wird; Jeder Befehl, der auf einen dieser Befehle verweist, kann unabhängig davon, wie der Befehl großgeschrieben wird, auf das andere zugreifen.
Symbolsyntax in numerischen Ausdrücken
Der Debugger versteht zwei verschiedene Arten von Ausdrücken: Microsoft Macro Assembler (MASM)-Ausdrücke und C++-Ausdrücke. Im Hinblick auf Symbole unterscheiden sich diese beiden Syntaxformen wie folgt:
In MASM-Ausdrücken wird jedes Symbol als Adresse interpretiert. Je nachdem, worauf sich das Symbol bezieht, ist dies die Adresse einer globalen Variablen, einer lokalen Variablen, einer Funktion, eines Segments, eines Moduls oder einer anderen erkannten Bezeichnung.
In C++-Ausdrücken wird jedes Symbol gemäß seinem Typ interpretiert. Je nachdem, worauf sich das Symbol bezieht, kann es als ganze Zahl, eine Datenstruktur, einen Funktionszeiger oder einen anderen Datentyp interpretiert werden. Ein Symbol, das keinem C++-Datentyp (z. B. einem nicht geänderten Modulnamen) entspricht, führt zu einem Syntaxfehler.
Eine Erläuterung dazu, wann und wie die einzelnen Syntaxtypen verwendet werden, finden Sie unter Auswerten von Ausdrücken.
Wenn Sie MASM-Ausdruckssyntax verwenden, sollte jedes Symbol, das als hexadezimale Zahl interpretiert werden kann, oder als Register (z. B. BadFeed, ebX) immer einem Ausrufezeichen vorangestellt werden. Dadurch wird sichergestellt, dass der Debugger ihn als Symbol erkennt.
Der Befehl ss (Set Symbol Suffix) kann verwendet werden, um das Symbolsuffix festzulegen. Dadurch wird der Debugger angewiesen, automatisch "A" oder "W" an einen beliebigen Symbolnamen anzufügen, den er sonst nicht finden kann.
Viele Win32-Routinen sind sowohl in ASCII- als auch in Unicode-Versionen vorhanden. Diese Routinen haben oft ein "A" oder "W" an das Ende ihrer Namen angehängt. Die Verwendung eines Symbolsuffixs unterstützt den Debugger bei der Suche nach diesen Symbolen.
Der Suffixabgleich ist standardmäßig nicht aktiv.
Symbolsyntax in Textausdrücken
Symbole können in den Textparametern einiger Befehle verwendet werden, z. B. bm (Haltepunkt festlegen) und x (Symbole untersuchen).
Diese Textparameter unterstützen eine Vielzahl von Wildcards und Bezeichnern. Weitere Informationen finden Sie unter Zeichenfolgen-Wildcard-Syntax. Zusätzlich zu den standardmäßigen Zeichenfolgen-Wildcards kann einem Textausdruck, der zum Angeben eines Symbols verwendet wird, ein führender Unterstrich vorangestellt werden. Wenn es mit einem Symbol übereinstimmt, behandelt der Debugger dies als eine beliebige Anzahl von Unterstrichen, auch null.
Das Symbolsuffix wird beim Abgleichen von Symbolen in Textausdrücken nicht verwendet.