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.
Felsökningsprogrammet förstår två olika uttrycksformer: MASM-uttryck och C++-uttryck.
Microsoft Macro Assembler-uttryck (MASM) används i exemplen i den här hjälpdokumentationen, förutom när något annat anges. I MASM-uttryck behandlas alla symboler som adresser.
C++-uttryck är samma som de som används i den faktiska C++-koden. I dessa uttryck tolkas symboler som lämpliga datatyper.
När varje syntax används
Du kan välja standarduttryckets utvärderare på något av följande sätt:
Använd miljövariabeln _NT_EXPR_EVAL innan felsökningsprogrammet startas.
Använd kommandoradsalternativet-ee {masm|c++} när felsökningsprogrammet startas.
Använd kommandot .expr (Choose Expression Evaluator) för att visa eller ändra uttrycksutvärderaren när felsökningsprogrammet har körts.
Om du inte använder någon av ovanstående metoder använder felsökaren MASM-uttrycksutvärderingen.
Om du vill utvärdera ett uttryck utan att ändra felsökningstillståndet kan du använda ? (Utvärdera uttryck) befallning.
Alla kommandon och felsökningsinformationsfönster tolkar sina argument via standarduttrycksutvärderingen med följande undantag:
Den ?? (Utvärdera C++-uttryck) kommandot använder alltid C++-uttrycksutvärderingen.
Fönstret Klocka använder alltid C++-uttrycksutvärderaren.
Fönstret Lokalt använder alltid C++-uttrycksutvärderaren.
Vissa tilläggskommandon använder alltid MASM-uttrycksutvärderaren (och andra tilläggskommandon accepterar endast numeriska argument i stället för fullständiga uttryck).
Om någon del av ett uttryck omges av parenteser och du infogar två at-tecken (@@) före uttrycket, utvärderas uttrycket av en uttrycksutvärderare som vanligtvis inte skulle användas i det här fallet.
Med de två snabel-a-tecken (@@) kan du använda två olika utvärderare för olika parametrar i ett enskilt kommando. Du kan också utvärdera olika delar av ett långt uttryck med olika metoder. Du kan kapsla de två vid tecken. Varje utseende av de två vid tecken växlar till den andra uttrycksutvärderaren.
Varning Syntaxen för C++-uttryck är användbar för att manipulera strukturer och variabler, men den passar inte bra som parser för parametrarna för felsökningskommandon. När du använder felsökningskommandon i allmänna syften eller om du använder felsökningstillägg bör du ange MASM-uttryckssyntax som standarduttrycksutvärdering. Om du måste ha en specifik parameter, använd C++-uttryckssyntax med två snabel-a-tecken (@@).
Mer information om de två olika uttryckstyperna finns i Numerisk uttryckssyntax.
Tal i uttryck
Tal i MASM-uttryck tolkas enligt den aktuella basen. Kommandot n (Ange nummerbas) kan användas för att ange standardradixet till 16, 10 eller 8. Alla icke-prefixerade tal tolkas i den här basen. Standardradixet kan åsidosättas genom att ange 0x-prefixet (hexadecimalt), 0n-prefixet (decimal), 0t-prefixet (oktalt) eller 0y-prefixet (binärt).
Tal i C++-uttryck tolkas som decimaltal om du inte anger något annat. Om du vill ange ett hexadecimalt heltal lägger du till 0x före talet. Om du vill ange ett oktalt heltal lägger du till 0 (noll) före talet. (I felsökningsprogrammets utdata används dock 0n-decimalprefixet ibland.)
Om du vill visa ett tal i flera baser samtidigt använder du kommandot .formats (Visa talformat).
Symboler i uttryck
De två typerna av uttryck tolkar symboler på olika sätt:
I MASM-uttryck tolkas varje symbol som en adress. Beroende på vad symbolen refererar till är den här adressen 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) skapar ett syntaxfel.
Om en symbol kan vara tvetydig, föregå den med modulnamnet och ett utropstecken ( ! ). Om symbolnamnet kan tolkas som ett hexadecimalt tal, föregå det med modulnamnet och ett utropstecken ( ! ) eller bara ett utropstecken. Om du vill ange att en symbol ska vara lokal utelämnar du modulnamnet och inkluderar ett dollartecken och ett utropstecken ( $! ) före symbolnamnet. Mer information om hur du tolkar symboler finns i Symbolsyntax och Symbolmatchning.
Operatorer i uttryck
Varje uttryckstyp använder en annan uppsättning operatorer.
Mer information om de operatorer som du kan använda i MASM-uttryck och deras prioritetsregler finns i MASM-nummer och operatorer.
Mer information om de operatorer som du kan använda i C++-uttryck och deras prioritetsregler finns i C++-tal och operatorer.
Kom ihåg att MASM-åtgärder alltid är bytebaserade och att C++-åtgärder följer C++-typregler (inklusive skalning av pekarens aritmetik).
Några exempel på de olika syntaxerna finns i Exempel på blandade uttryck.