Uživatelské nástroje

Nástroje pro tento web


lnxspectrum:debugger

Debugger

Debugger slouží ke sledování a krokování emulovaného procesoru Z80. Z důvodu výkonu jsou všechny sledovací funkce aktivní pouze, pokud je otevřeno okno Debugger. Proto po zavření okna s Debuggerem budou ignorovany například nastavené Breakpointy.

Popis hlavního okna v Debuggeru:

1. Ukazatel na příští krokovanou instrukci

Žlutě označená instrukce ukazuje na instrukci, která se provede v dalším kroku.

2. Breakpoint

Při dosažení této adresy se zastaví krokování programu. Přidat Breakpoint můžeme několika způsoby. Buď dvojklikem na instrukci, zápisem parametrů do záložky Breakpoints (vpravo nahoře), nebo přidáním Breakpointu z editoru assembleru. Breakpointy jsou aktivní pouze pokud je otevřené okno s Debuggerem.

3. Označení pro kopírování kódu

Slouží pro disassemblování. Označíme část kódu - klikneme na adresu, kde začíná kód který chceme dissasemblovat. Pak klikneme se stisknutým Shiftem na adresu poslední instrukce, kterou chceme dissasemblovat. CTRL+C zkopírujeme kód do clipboardu. Odtuď ho můžeme vložit do libovolného textového editoru, například do Assembler editoru v LnxSpectrum. Kód obsahuje i vložené návěstí. Pokud například instrukce JR ukazovala na instrukci ležící v označeném rozmezí, nahradí adresu návěstím „x“ a adresa.

4. Status

Informuje v jakém stavu je procesor, zda běží, je pauznutý atd. Pokud je například zastaven Breakpointem, oznamuje který Breakpoint ho zastavil.

5. Zobrazení od adresy

Zobrazí strojové instrukce od uvedené adresy. Nemusí to být jen číselná hodnota, může to být klidně návěstí vytvořené v Assembler editoru. Zobrazování má smysl jen při pauznuté simulaci CPU, protože jakmile se dostane právě běžící instrukce mimo obrazovku, automaticky se zobrazení přesune na ní.

6. CLS, smazání obrazovky

Smaže obsah videoram v ZX Spectru, rozsah 16384-23295, bitmapu nahradí nulou, attributy nahradí nadefinovanou barvou, ta se definuje stisknutím pravého tlačítka myši na buttonu CLS a vybráním Select color. Nemaže alternativní videoram v ZX Spectrum 128.

7. Refresh, obnovení

Pokud chceme znovu zobrazit aktuální instrukci kde se nachází registr PC, obnovíme výpis tímto tlačítkem.

8. PC=ENT

Pokud v Assembler editoru vytváříme projekt, a máme ho zkompilovaný, můžeme tímto nastavit PC na startovní adresu našeho programu, případně tím způsobit znovuspuštění našeho projektu od začátku.

9. Záložky

Zde ovládáme simulovaný procesor (CPU control), nebo upravujeme Breakpointy (Breakpoints), nebo máme záložku pro zvláštní nastavení.

10. Jádro simulovaného procesoru

Zde vidíme obsah všech registrů obsažených v procesoru Z80, vidíme tu i obsah paměti kam dvojice registrů ukazuje. U registru A je tu i binarní podoba, a podrobně zobrazený je tu i stavový registr F, kde můžeme přímo měnit jeho stav. Pokud potřebujeme změnit stav ostatních registrů, použijeme CommandLine (viz. bod 16).

11. Zobrazení v HEX

Standartně se všechny hodnoty zobrazují v desítkové soustavě. Pokud chceme všechny informace mít zobrazené v šestnáctkové soustavě, zaškrtneme zde.

12. Časovač

Měří přesný čas od spuštění, nebo posledního vynulování. Čas je udáván v taktech procesoru, a v reálném čase (ns, ms, s…). Časovač vynulujeme kliknutím na něj.

13. Ovládání běhu procesoru

Tlačítko „Step“ provede jednu jedninou instrukci a procesor opět zastaví. Tlačítko „Step over“ provede také jednu instrukci, ale pokud se jedná o instrukci jako například Call, Halt, Djnz, Rst, Ldir, Lddr, dojde k zastavení procesoru až po dosažení následující instrukce. Call rutina tedy proběhne v reálné rychlosti, djnz vykoná všechny opakování najednou, halt se uvolní až po vyvolání přerušení atd. Tlačítko „Run“ spustí simulaci procesoru v reálné rychlosti. Tlačítko „Stop“ zastaví procesor Speciální krokování umožňuje „Bublostep“ :) Zde si můžeme nastavit kolik instrukcí provedeme při jediném stisknutí tlačítka „Step nnn“. Pokud navíc zaškrtneme opakování (Repeat) můžeme tím simulovat běh zpomaleného procesoru, kde jeho rychlost můžeme za chodu plynule měnit posuvníkem.

14. Informace o nastaveném hardware

Zobrazuje i informace o zvolené paměťové stránce.

15. Obsah zásobníku

Ukazuje obsah zásobníku

16. Command Line

Pokud potřebujeme změnit obsah nějakého registru, můžeme použít tento příkazový řádek. Neprovádí se Z80 instrukce, takže syntax se nemusí shodovat s instrukcí v Z80!

ld a,255 - nahraje do registru A hodnotu 255
ld (hl),255 - uloží do RAM s adresou uloženou v registru HL bajt s hodnotou 255
ld 65535,255 - uloží na adresu 65535 v RAM bajt s hodnotou 255
di / ei - zakáže / povolí přerušení
rampage 1 - přepne stránku paměti na požadovanou stránku. U modelu Didaktik Gama je stránka v rozsahu 0-1, u ZX Spectrum 128 je v rozsahu 0-7
im 0/1/2 - přepne režim přerušení

Záložka - Breakpoints

Více info o Breakpoints naleznete zde.

Záložka - Misc

Záložka Misc obsahuje jinam nezařaditelné funkce. Ve verzi 1.0.9 obsahuje:

Visible all video changes

Všechny video změny jsou viditelné. Povolením této funkce uvidíme při trasování programu okamžitě změnu, prováděnou ve videoram. Standartně bysme tuto změnu uviděli až po prolétnutí obrazového paprsku televizoru. Obrazový paprsek prolétává přes obrazovku 50x za sekundu, jedno obnovení obrazovky trvá 20ms. Pokud zaškrtneme tuto volbu, žádný paprsek nebude existovat.

Visible Beam position

Na levé straně se bude zobrazovat značka, kde se zrovna vykresluje paprsek na televizoru.

Debugger - Menu

View /
Memory zobrazuje výpis paměti v bajtech, ve wordech a znaky v Ascii
MHB 8255 ports zobrazuje hodnoty portů A, B, C a řídícího registru
AY 3-8910 ports zobrazuje obsahy registrů zvukového čipu, včetně druhého, obsaženého v rozšiřující kartě TurboSound
Edit /
Save binary uloží obsah paměti do souboru. Nastavíte si odkud, kam nebo v jaké délce. Data můžeme uložit do souboru TAP, který můžeme například načíst do ZX Spectra klasickou instrukcí z Basicu „Load “„ Code“, nebo uložit do binárního souboru BIN. V obou případech můžeme zapnout kompresi dat, která šetří pamět. V takovém případě bude mít binární soubor koncovku BINC, a pro rozbalení dat do původní podoby musíme použít dekompresor. Ten do svého projektu můžeme přidat v Assembler editoru.
Kopírovat slouží k disassemblaci strojového kódu - viz. bod č.3
lnxspectrum/debugger.txt · Poslední úprava: 2018/07/31 10:05 (upraveno mimo DokuWiki)