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.
Om du har C- eller C++-källfiler för ditt program kan du använda felsökningsprogrammet mycket kraftfullare om du felsöker i källläge.
Det finns dock många gånger som du inte kan utföra källfelsökning. Du kanske inte har källfilerna för ditt program. Du kanske felsöker någon annans kod. Du kanske inte har skapat dina körbara filer med fullständiga .pdb-symboler. Och även om du kan utföra källfelsökning i ditt program kan du behöva spåra Microsoft Windows-rutiner som programmet anropar eller som används för att läsa in ditt program.
I dessa situationer måste du felsöka i assemblerläge. Sammansättningsläget har dessutom många användbara funktioner som inte finns i källfelsökningen. Felsökningsprogrammet visar automatiskt innehållet på minnesplatser och register när de används och visar adressen till programräknaren. Den här visningen gör monteringsfelsökning till ett värdefullt verktyg som du kan använda tillsammans med källfelsökning.
Demonteringskod
Felsökningsprogrammet analyserar främst binär körbar kod. I stället för att visa den här koden i raw-format demonterar felsökningsprogrammet koden. Felsökningsprogrammet konverterar alltså koden från datorspråk till sammansättningsspråk.
Du kan visa den resulterande koden (kallas disassembly-kod) på flera olika sätt:
Kommandot u (unassemble) demonterar och visar ett angivet avsnitt av datorspråket.
Kommandot uf (Unassemble Function) demonterar och visar en funktion.
Kommandot up (Unassemble from Physical Memory) demonterar och visar ett angivet avsnitt av datorspråket som har lagrats i fysiskt minne.
Kommandot ur (avmontera BIOS i verkligt läge) demonterar och visar en angiven 16-bitars kod i verkligt läge.
Kommandot ux (Unassemble x86 BIOS) demonterar och visar den x86-baserade BIOS-kodinstruktionen på en angiven adress.
(Endast WinDbg) Demonteringsfönstret demonteras och visar ett angivet avsnitt av datorspråket. det här fönstret är automatiskt aktivt om du väljer kommandot öppna demontering automatiskt på fönstermenyn . Du kan också öppna det här fönstret genom att välja demontering på visningsmenyn, trycka på alt+7 eller trycka på demonteringsknappen (alt+7).
Demonteringsvisningen visas i fyra kolumner: adressförskjutning, binär kod, sammansättningsspråk mnemonic och information om sammansättningsspråk. I följande exempel visas den här skärmen.
0040116b 45 inc ebp
0040116c fc cld
0040116d 8945b0 mov eax,[ebp-0x1c]
Till höger om raden som representerar den aktuella programräknaren visar visningen värdena för alla minnesplatser eller register som används. Om den här raden innehåller en greninstruktion visas notationen [br=1] eller [br=0]. Den här notationen anger en gren som tas eller inte tas.
Du kan använda kommandot .asm (Ändra demonteringsalternativ) för att ändra hur de demonterade instruktionerna visas.
I WinDbgs disassembly-fönster är raden som representerar den aktuella programräknaren markerad. Rader där brytpunkter anges är också markerade.
Du kan också använda följande kommandon för att ändra sammansättningskoden:
Kommandot # (Search for Disassembly Pattern) söker i en minnesregion efter ett specifikt mönster. Det här kommandot motsvarar att söka i de fyra kolumnerna i disassembly-visningen.
Kommandot a (Assemble) kan ta sammansättningsinstruktioner och översätta dem till binär datorkod.
Sammansättningsläge och källläge
Felsökningsprogrammet har två olika driftlägen: sammansättningsläge och källläge.
När du stegar igenom ett program är storleken på ett steg en rad assemblerkod eller en rad källkod, beroende på läget.
Flera kommandon skapar olika dataskärmar beroende på läget.
I WinDbg flyttas fönstret Disassembly automatiskt till förgrunden när du kör eller går igenom ett program i sammansättningsläge. I källläge flyttas källfönstret till förgrunden.
Om du vill ange läget kan du göra något av följande:
Använd kommandot l+, l- (Ange källalternativ) för att styra läget. Kommandot l-t aktiverar sammansättningsläget.
(Endast WinDbg) Avmarkera kommandot Källlägepå felsökningsmenyn för att felsökaren ska gå in i sammansättningsläge. Du kan också välja knappen Källläge av i verktygsfältet.
När du är i monteringsläge i WinDbg visas ASM i statusfältet.
Snabbmenyn i WinDbgs disassembly-fönster innehåller kommandot Markera instruktioner från den aktuella källkoden. Det här kommandot visar alla instruktioner som motsvarar den aktuella källraden. Ofta motsvarar en enda källrad flera sammansättningsinstruktioner. Om koden har optimerats kanske dessa sammansättningsinstruktioner inte är i följd. Med kommandot Markera instruktioner från den aktuella källraden kan du hitta alla instruktioner som har sammanställts från den aktuella källraden.
Källfiler för sammansättningsspråk
Om programmet har skrivits på sammansättningsspråket kanske demonteringen som felsökaren genererar inte exakt matchar din ursprungliga kod. I synnerhet kommer NO-OPs och kommentarer inte att finnas.
Om du vill felsöka koden genom att referera till de ursprungliga .asm-filerna måste du använda felsökning i källläge. Du kan läsa in sammansättningsfilen som en C- eller C++-källfil. Mer information om den här typen av felsökning finns i Felsökning i källläge.