Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud máte pro aplikaci zdrojové soubory C nebo C++, můžete ladicí nástroj použít s větší účinností, pokud ladíte ve zdrojovém režimu.
Nicméně často nemůžete provést ladění kódu. Možná nemáte zdrojové soubory pro vaši aplikaci. Možná ladíte kód někoho jiného. Možná jste nestavili spustitelné soubory s úplnými symboly .pdb. A i když můžete ve své aplikaci provádět ladění zdrojového kódu, možná budete muset trasovat rutiny systému Microsoft Windows, které vaše aplikace volá nebo které jsou používány k jejímu načtení.
V těchto situacích musíte ladit v režimu sestavení. Režim sestavení má navíc mnoho užitečných funkcí, které nejsou k dispozici ve zdrojovém ladění. Ladicí program automaticky zobrazuje obsah paměťových míst a registrů při jejich přístupu a zobrazí také adresu čítače programu. Díky tomuto zobrazení se ladění sestavení stává cenným nástrojem, který můžete použít společně s laděním zdrojového kódu.
Kód pro demontáž
Ladicí program primárně analyzuje binární spustitelný kód. Místo zobrazení tohoto kódu v nezpracované podobě ladicí program rozebere tento kód. To znamená, že ladicí program převede kód ze strojového jazyka na jazyk sestavení.
Výsledný kód (známý jako disassembly kód) můžete zobrazit několika různými způsoby:
Příkaz u (Unassemble) rozloží a zobrazí zadanou část strojového kódu.
Příkaz uf (Unassemble Function) rozloží a zobrazí funkci.
Příkaz rozebere (deasembluje z fyzické paměti) a zobrazí zadanou část strojového kódu, která byla uložena ve fyzické paměti.
Příkaz ur (Unassemble Real Mode BIOS) rozloží a zobrazí zadaný 16bitový kód v reálném režimu.
Příkaz ux (Unassemble x86 BIOS) rozloží a zobrazí sadu instrukcí kódu BIOSu x86 na zadané adrese.
(jenom WinDbg) Okno rozkladu rozloží a zobrazí zadanou část strojového kódu. toto okno je automaticky aktivní, pokud vyberete příkaz automaticky otevřít disassemblování v nabídce okno. Toto okno můžete také otevřít výběrem možnosti demontáž v nabídce zobrazení, stisknutím alt+7 nebo stisknutím tlačítka demontáž (alt+7).
Zobrazení zpětného překladu je zobrazeno ve čtyřech sloupcích: posun adresy, binární kód, mnemoniky jazyka assembleru a podrobnosti assembleru. Následující příklad ukazuje toto zobrazení.
0040116b 45 inc ebp
0040116c fc cld
0040116d 8945b0 mov eax,[ebp-0x1c]
Napravo od řádku, který představuje aktuální čítač programu, se na displeji zobrazí hodnoty všech umístění paměti nebo registrů, ke kterým se přistupuje. Pokud tento řádek obsahuje instrukci větve, zobrazí se notace [br=1] nebo [br=0]. Tato notace označuje větev, která je nebo není převzata.
Pomocí příkazu .asm (Změnit možnosti deassemblování) můžete změnit způsob zobrazení rozebraných pokynů.
V okně disassemblace WinDbg je zvýrazněný řádek představující aktuální čítač programu. Řádky, ve kterých jsou nastavené zarážky, jsou také označené.
K manipulaci s kódem sestavení můžete použít také následující příkazy:
Příkaz # (hledat vzor demontáže) prohledá oblast paměti pro konkrétní vzor. Tento příkaz odpovídá prohledávání čtyř sloupců zobrazení dekompilace.
Příkaz (Assemble) může přijímat instrukce sestavení a překládat je do binárního strojového kódu.
Režim sestavení a režim zdroje
Ladicí program má dva různé provozní režimy: režim sestavení a zdrojový režim.
Při jednoduchém procházení aplikace je velikost jednoho kroku jedním řádkem kódu sestavení nebo jednoho řádku zdrojového kódu v závislosti na režimu.
Několik příkazů vytváří různé zobrazení dat v závislosti na režimu.
V systému WinDbg se okno zpětného překladu automaticky přesune do popředí při spuštění nebo procházení aplikace v režimu sestavení. V režimu zdroje se okno Zdroj přesune do popředí.
Pokud chcete nastavit režim, můžete udělat jednu z těchto věcí:
K řízení režimu použijte l+, l- (Nastavit možnosti zdroje) příkaz. Příkaz l-t aktivuje režim sestavení.
(jenom WinDbg) V nabídce Ladění zrušte volbu Zdrojový režim, čímž způsobíte, že ladicí program přejde do režimu sestavení. Na panelu nástrojů můžete také vybrat tlačítko pro vypnutí Zdrojového režimu.
Pokud jste v režimu sestavení WinDbg, ASM se zobrazí na stavovém řádku.
Místní nabídka v okně pro disassemblování WinDbg obsahuje příkaz Zvýraznit příkazy z aktuálního zdrojového řádku. Tento příkaz zvýrazní všechny pokyny, které odpovídají aktuálnímu zdrojovému řádku. Jeden zdrojový řádek často odpovídá více instrukcím sestavení. Pokud je kód optimalizovaný, nemusí být tyto pokyny k sestavení po sobě jdoucí. Příkaz Zvýraznit z aktuálního zdrojového řádku umožňuje najít všechny instrukce sestavené z aktuálního řádku zdroje.
Zdrojové soubory jazyka sestavení
Pokud byla vaše aplikace napsaná v jazyce sestavení, nemusí překlad, který ladicí program vytvoří, přesně odpovídat původnímu kódu. Konkrétně NO-OPs a komentáře nebudou k dispozici.
Pokud chcete kód ladit odkazem na původní soubory .asm, musíte použít ladění zdrojového režimu. Můžete načíst soubor sestavení jako zdrojový soubor C nebo C++. Další informace o tomto druhu ladění naleznete v tématu Ladění ve zdrojovém režimu.