Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med symboler kan du direkt ändra token som används av programmet som debuggas. Du kan till exempel ange en brytpunkt vid huvudfunktionen med kommandot bp main eller visa heltalsvariabeln MyInt med kommandot dd MyInt L1.
I många fall kan symboler användas som parametrar i felsökningskommandon. Detta stöds för de flesta numeriska parametrar och stöds även i vissa textparametrar. Förutom allmänna regler för symbolsyntax finns det även symbolsyntaxregler som gäller i vart och ett av dessa fall.
Allmänna symbolsyntaxregler
Ett symbolnamn består av ett eller flera tecken, men börjar alltid med en bokstav, understreck (_), frågetecken (?) eller dollartecken ($).
Ett symbolnamn kan kvalificeras med ett modulnamn. Ett utropstecken (!) separerar modulnamnet från symbolen (till exempel mymodule!main). Om inget modulnamn används kan symbolen fortfarande prefixas med ett utropstecken. Att använda ett utropstecken utan modulnamn kan vara särskilt användbart, även för lokala variabler, för att indikera för ett felsökningskommando att en parameter är ett namn och inte ett hexadecimalt tal. Variabeln fade kommer exempelvis att behandlas av kommandot dt (Display Type) som en adress, om den inte har ett utropstecken framför eller om alternativet -n används. Men för att ange att en symbol är lokal, föregå den med ett dollartecken ( $ ) och ett utropstecken ( ! ), som i $!lime.
Symbolnamnen är helt skiftlägesokänsliga. Det innebär att förekomsten av en myInt och en MyInt i ditt program inte kommer att tolkas korrekt av felsökarna. Alla kommandon som refererar till något av dessa kan komma åt det andra utan hänsyn till hur kommandot är skrivet med stora bokstäver.
Symbolsyntax i numeriska uttryck
Felsökningsprogrammet förstår två olika typer av uttryck: Masm-uttryck (Microsoft Macro Assembler) och C++-uttryck. När det gäller symboler skiljer sig dessa två former av syntax på följande sätt:
I MASM-uttryck tolkas varje symbol som en adress. Beroende på vad symbolen refererar till är detta adressen till en global variabel, lokal variabel, funktion, segment, modul eller någon annan identifierad etikett.
I C++-uttryck tolkas varje symbol enligt dess typ. Beroende på vad symbolen refererar till kan den tolkas som ett heltal, en datastruktur, en funktionspekare eller någon annan datatyp. En symbol som inte motsvarar en C++-datatyp (till exempel ett omodifierat modulnamn) resulterar i ett syntaxfel.
En förklaring av när och hur du använder varje typ av syntax finns i Utvärdera uttryck.
Om du använder MASM-uttryckssyntax bör alla symboler som kan tolkas som ett hexadecimalt tal eller som ett register (t.ex. BadFeed, ebX) alltid föregås av ett utropstecken. På så sätt ser du till att felsökaren känner igen den som en symbol.
Kommandot ss (Set Symbol Suffix) kan användas för att ange symbolsuffixet. Detta instruerar felsökaren att automatiskt lägga till "A" eller "W" i ett symbolnamn som inte kan hittas på annat sätt.
Många Win32-rutiner finns i både ASCII- och Unicode-versioner. Dessa rutiner har ofta ett "A" eller "W" som läggs till i slutet av deras namn. Om du använder ett symbolsuffix får du hjälp med felsökningsprogrammet när du söker efter dessa symboler.
Suffixmatchning är inte aktiv som standard.
Symbolsyntax i textuttryck
Symboler kan användas i textparametrarna för vissa kommandon , till exempel bm (Ange brytpunkt) och x (Undersök symboler).
Dessa textparametrar stöder en mängd olika jokertecken och specificerare. Mer information finns i Strängsyntax för jokertecken . Förutom jokertecken för standardsträngar kan ett textuttryck som används för att ange en symbol prefixeras med ett inledande understreck. När detta matchas med en symbol kommer felsökaren att behandla detta som ett godtyckligt antal understreck, till och med noll.
Symbolsuffixet används inte vid matchande symboler i textuttryck.