OldComp.cz
http://oldcomp.cz/

Nativní debugger
http://oldcomp.cz/viewtopic.php?f=29&t=2288
Stránka 12

Autor:  SCjoe [ 31.01.2015, 10:25 ]
Předmět příspěvku:  Nativní debugger

Existuje, vedle četných M/C monitorů s klasickým ovládáním (zadáváním písmen),
lepší program, který umí trasovat programy různými způsoby, testovat, resp. hlídat stavy registrů apod.?
Hledám utilitu přímo pro C64 (příp. C128), ne emulační kanóny typu ICU64.

Na krátké experimenty by stačilo i něco jednoduššího,
např. podobné stránkovému editoru s jednoduchým trasováním ve výukovém balíku pro ZX Spectrum.

Autor:  LHS [ 31.01.2015, 18:10 ]
Předmět příspěvku:  Re: Nativní debugger

Jediný co existuje, tak jsou disassemblery, nebo music playery s výpisem SID registrů + ram.

Autor:  SCjoe [ 08.05.2019, 21:10 ]
Předmět příspěvku:  Re: Nativní debugger

Zatimco ke mne zpoza oceanu putuje cosi jako hardwareova ladicka programu,
na netu se vylouplo tohle megadílo:

Megamon 64 by Mark Schultz is not only a great ML Monitor, it is also very well documented. Docs are on disk.
http://www.commodore.software/downloads ... megamon-64

Megamon has a single-step feature (unusual in memory-resident monitors)
https://www.lyonlabs.org/commodore/onrequest/index.html

Pravy debugger pro C64 se tezko hleda, vydavaji za nej kdejaky disasembler, vcetne starickeho Supermonu.

Autor:  Comos [ 10.06.2019, 23:35 ]
Předmět příspěvku:  Re: Nativní debugger

SCjoe píše:
Zatimco ke mne zpoza oceanu putuje cosi jako hardwareova ladicka programu,
na netu se vylouplo tohle megadílo:

Megamon 64 by Mark Schultz is not only a great ML Monitor, it is also very well documented. Docs are on disk.
http://www.commodore.software/downloads ... megamon-64

Megamon has a single-step feature (unusual in memory-resident monitors)
https://www.lyonlabs.org/commodore/onrequest/index.html

Pravy debugger pro C64 se tezko hleda, vydavaji za nej kdejaky disasembler, vcetne starickeho Supermonu.


Reálnej debugger čistě softwarovej jako program co by se nahrál je trochu nereálný na C64, smysl by měl pouze hardwarovej v exp portu,je je možnost reálně koukat na bus,což i existovalo.PDS Development system to myslím umožňoval.Ze současných cartridge má asi nejlíp propracovanej monitor IDE64.Ovšem Reloaded MK2 už nabízí reálné debugovací funkce,kde kromě klasického monitoru a dalších funkcí lze krokovat běh C64 ze strany PC.

Autor:  Busy [ 11.06.2019, 12:04 ]
Předmět příspěvku:  Re: Nativní debugger

Comos píše:
Reálnej debugger čistě softwarovej jako program co by se nahrál je trochu nereálný na C64
Preco by mal byt nerealny ? Kopec inych osembitov (aj horsich) ma softwerovy debugger.

Inak, napadlo ma ze kedysi davno (este v 80-tych rokoch) nejaky asembler / monitor / a-mozno-aj-debugger urobil Hell-bytes (Juraj Zopp). Hovoril, ze sa mi pacilo spektracke MRS, tak ho preportoval na C64 (no, co si matne spominam, skor nez port MRS mi to prislo ako port Gens-u a Mons-u). Zial, s komodorom uz davno skoncil, takze to najskor uz mat nebude, ale mozno sa to este bude povalovat niekde na nete.

Autor:  Comos [ 11.06.2019, 21:08 ]
Předmět příspěvku:  Re: Nativní debugger

Citace:
Preco by mal byt nerealny ? Kopec inych osembitov (aj horsich) ma softwerovy debugger.


To se jedná jen o ML monitor,který řada lidí považuje za debugger ač do reálnýho debuggeru tomu pár vlastností chybí.

Autor:  Busy [ 12.06.2019, 10:28 ]
Předmět příspěvku:  Re: Nativní debugger

Comos píše:
Citace:
Preco by mal byt nerealny ? Kopec inych osembitov (aj horsich) ma softwerovy debugger.
To se jedná jen o ML monitor,který řada lidí považuje za debugger ač do reálnýho debuggeru tomu pár vlastností chybí.
Teraz nie som si isty ci obaja pod pojmami ML monitor a debugger myslime to iste. Aspon ja si pod pojmom softwerovy debugger predstavujem program ktory umozni vykonavat ladeny program, krokovat ho, sledovat jeho vykonavanie (vypis instrukcii, obsahy registrov a pameti) a nastavovat rozne podmienky vykonavania (ochranne okna v pameti, breakpointy...). A toto vsetko sa softwerovo da urobit.

Autor:  Comos [ 13.06.2019, 00:23 ]
Předmět příspěvku:  Re: Nativní debugger

Busy píše:
Comos píše:
Citace:
Preco by mal byt nerealny ? Kopec inych osembitov (aj horsich) ma softwerovy debugger.
To se jedná jen o ML monitor,který řada lidí považuje za debugger ač do reálnýho debuggeru tomu pár vlastností chybí.
Teraz nie som si isty ci obaja pod pojmami ML monitor a debugger myslime to iste. Aspon ja si pod pojmom softwerovy debugger predstavujem program ktory umozni vykonavat ladeny program, krokovat ho, sledovat jeho vykonavanie (vypis instrukcii, obsahy registrov a pameti) a nastavovat rozne podmienky vykonavania (ochranne okna v pameti, breakpointy...). A toto vsetko sa softwerovo da urobit.


Urobit se to dá,ale né na C64 ,kde limit je paměť a ASM je low level.Relativně lze ladit programy v basicu,protože basic je tady high level a basic sám o sobě nemodifikuje vektory,které se na tohle dají využít.U Final Cartridge III existuje trace command,kdy pak vidím v horním řádku právě vykonávanou řádku v basicu.Tohle je možný jen proto,že mi běží na pozadí ASM rutina (na principu TSR), v případě FC3 spuštěná v ROMce a v případě utilitiy,která zabírá oblast RAM,kterou BASIC nevyužívá.V případě ASM programu můžu na nějaké spešl debuggovací funkce zapomenout.S IDE64 mám možnost program breaknout a dostat se do monitoru jen pokud mi program nepozmění NMI vektor,pak ho musím jedině ručně upravit,aby mi ten vektor nepřepisoval.Samozřejmě pokud program potřebuje vlastní NMI vektor ke své práci,tak mám smůlu.Backtracovat je možné do určitě úrovně i nastavit breakpointy na reálnách adresách anebo prostě break natvrdo ručně.Můžu měnit obsah paměti,registry load/save kompletní paměti a ukončením monitoru program dál pokračuje.Na nějaké krokování ať už na klávesu,sledování programu můžete rovnou zapomenout.Reálnej C64 debugger je ve Vice na PC.

Autor:  Busy [ 13.06.2019, 09:29 ]
Předmět příspěvku:  Re: Nativní debugger

Comos píše:
Urobit se to dá,ale né na C64 ,kde limit je paměť a ASM je low level.
Podla mna by sa urcite dalo aj na C64. Ved napriklad taky ZX Spectrum, ten ma este mensiu pamet (48kB, z coho este natvrdo ukroji 7kB obrazovka takze realne iba cca 41kB), a existuje tu kopec plnohodnotnych cisto softwerovych debuggerov. Umoznuju krokovat strojakovy program vsetkymi beznymi sposobmi ako nativne debuggery: step, step-over (rychle vykonanie celeho podprogramu), beh programu v plnej rychlosti az po najblizsi breakpoint, sledovanie/modifikacia pameti a vsetkych registrov procesora, ochrana vybranych usekov pameti pred zapisom a vykonavanim kodu.
Samozrejme je tu to obmedzenie ze debugger musi byt nahrany niekde v pameti, a tento kus pameti krokovany program potom nemoze pouzivat. Ale s tym sa pri softwerovych debuggeroch pocita.

Autor:  Charlie_XZ [ 13.06.2019, 10:18 ]
Předmět příspěvku:  Re: Nativní debugger

Busy píše:
Comos píše:
Urobit se to dá,ale né na C64 ,kde limit je paměť a ASM je low level.
Podla mna by sa urcite dalo aj na C64. Ved napriklad taky ZX Spectrum, ten ma este mensiu pamet (48kB, z coho este natvrdo ukroji 7kB obrazovka takze realne iba cca 41kB), a existuje tu kopec plnohodnotnych cisto softwerovych debuggerov. Umoznuju krokovat strojakovy program vsetkymi beznymi sposobmi ako nativne debuggery: step, step-over (rychle vykonanie celeho podprogramu), beh programu v plnej rychlosti az po najblizsi breakpoint, sledovanie/modifikacia pameti a vsetkych registrov procesora, ochrana vybranych usekov pameti pred zapisom a vykonavanim kodu.
Samozrejme je tu to obmedzenie ze debugger musi byt nahrany niekde v pameti, a tento kus pameti krokovany program potom nemoze pouzivat. Ale s tym sa pri softwerovych debuggeroch pocita.


Já myslím že by stačilo číst co píše Cosmos, pokusit se porozumět tomu textu a až teprve potom psát co si myslíš.

Můžeš nám třeba jen nastínit jak by se tedy na C64 bez jakékoliv další HW podpory dalo realizovat toho ?

"beh programu v plnej rychlosti az po najblizsi breakpoint, sledovanie/modifikacia pameti a vsetkych registrov procesora, ochrana vybranych usekov pameti pred zapisom a vykonavanim kodu."

Autor:  Busy [ 14.06.2019, 09:55 ]
Předmět příspěvku:  Re: Nativní debugger

Charlie_XZ píše:
Busy píše:
Samozrejme je tu to obmedzenie ze debugger musi byt nahrany niekde v pameti, a tento kus pameti krokovany program potom nemoze pouzivat. Ale s tym sa pri softwerovych debuggeroch pocita.
Já myslím že by stačilo číst co píše Cosmos, pokusit se porozumět tomu textu a až teprve potom psát co si myslíš.
Ja si zase myslim ze by stacilo si precitat aj posledne dve vety z mojho predchadzajuceho prispevku (nechal som ich tu v citate) a pokusit sa im porozumiet :)

Autor:  Charlie_XZ [ 14.06.2019, 10:25 ]
Předmět příspěvku:  Re: Nativní debugger

Busy píše:
Charlie_XZ píše:
Busy píše:
Samozrejme je tu to obmedzenie ze debugger musi byt nahrany niekde v pameti, a tento kus pameti krokovany program potom nemoze pouzivat. Ale s tym sa pri softwerovych debuggeroch pocita.
Já myslím že by stačilo číst co píše Cosmos, pokusit se porozumět tomu textu a až teprve potom psát co si myslíš.
Ja si zase myslim ze by stacilo si precitat aj posledne dve vety z mojho predchadzajuceho prispevku (nechal som ich tu v citate) a pokusit sa im porozumiet :)


Neodbíhej od tématu, tohle není ten problém a proto jsem ho ani nevypíchnul, odpověz mi na mojí původní otázku jak umožníš "beh programu v plnej rychlosti az po najblizsi breakpoint, sledovanie/modifikacia pameti a vsetkych registrov procesora, ochrana vybranych usekov pameti pred zapisom a vykonavanim kodu".

O tom totiž nativní debugger je a ten bohužel není bez HW podpory nebo možnosti nějaké virtualizace která mimochodem zase potřebuje alespoň minimální HW podporu.

Autor:  Busy [ 14.06.2019, 11:30 ]
Předmět příspěvku:  Re: Nativní debugger

Charlie_XZ píše:
tohle není ten problém
Ok, beriem ta za slovo :)

beh programu v plnej rychlosti az po najblizsi breakpoint - Normalny klasicky softwerovy breakpoint. Na 6502 je na toto vhodna instrukcia BRK a ked ladeny program vyuziva prerusenie tak sa s urcitymi obmedzeniami da pouzit aj JSR. Proste, ked program narazi na breakpoint, tak breakpoint sposobi ze program nepokracuje vo vykonavani, ale skoci do debuggera a debugger nasledne zobrazi kde program skoncil a uzivatel sa moze rozhodnut co dalej.

sledovanie/modifikacia pameti a vsetkych registrov procesora - tak toto je hadam jasne, uzivatel moze pocas krokovania sledovat a modifikovat pamet ci registre. Pocas ostreho behu na toto moze sluzit prave ten breakpoint - ked program narazi na breakpoint, riadenie sa odovzda debuggeru, ktory na zaklade definovanych podmienok (napr. na zaklade hodnot v registroch a v pameti) vie rozhodnut co dalej (napriklad na ZX Spektre toto umoznuje Laser Genius debugger).

ochrana vybranych usekov pameti pred zapisom a vykonavanim koduV ktoromkolvek krokovacom rezime ma debugger stale plnu kontrolu nad programom, vie ake instrukcie z akej adresy sa idu vykonavat, vie kam tie instrukcie sahaju a co modifikuju. Takze nie je problem definovat useky pameti kde sa dane cinnost mozu a kde nesmu vykonavat. Napriklad debugger MRS umoznuje definovat styri pametove okna kde sa program moze vykonavat (akonahle sa skoci mimo niektoreho okna, vykonavanie programu sa zastavi), tak isto umoznuje definovat styri pametove okna so zakazanym zapisom - akonahle by vykonavana instrukcia chcela zapisat do tejto pameti, program sa pred jej vykonanim zastavi, a este okrem toho umoznuje definovat aj "zakazane" instrukcie, t.j. instrukcie ktore v programe vykonat nechceme (napr. ak nastavim ako zakazanu instrukciu OUT, tak potom pri akomkolvek poslani dat do akejkolvek periferie sa program zastavi a ja mozem skontrolovat ci to chcem alebo nie).

Autor:  Comos [ 15.06.2019, 14:05 ]
Předmět příspěvku:  Re: Nativní debugger

Citace:
beh programu v plnej rychlosti az po najblizsi breakpoint - Normalny klasicky softwerovy breakpoint. Na 6502 je na toto vhodna instrukcia BRK a ked ladeny program vyuziva prerusenie tak sa s urcitymi obmedzeniami da pouzit aj JSR. Proste, ked program narazi na breakpoint, tak breakpoint sposobi ze program nepokracuje vo vykonavani, ale skoci do debuggera a debugger nasledne zobrazi kde program skoncil a uzivatel sa moze rozhodnut co dalej.


BRK instrukci využívám jak jsem již popisoval výše, ale je to použitelné jen pokud máte konfiguraci paměti ($01) nastavenou,aby byla vidět Kernal ROM, jelikož při BRK se zapnutou Kernal ROM se skáče přes vektor..Pokud vám běžící program přepíše vektor tabulku podle své potřeby nebo mění konfiguraci RAM $01 podle potřeby a v případě konfigurace $01 na bez Kernalu si nastavi hardwarouvou IRQ adresu ($FFFE-$FFFF) jak potřebuje,tak jsou nějaký breakpointy k ničemu.

Citace:
sledovanie/modifikacia pameti a vsetkych registrov procesora - tak toto je hadam jasne, uzivatel moze pocas krokovania sledovat a modifikovat pamet ci registre. Pocas ostreho behu na toto moze sluzit prave ten breakpoint - ked program narazi na breakpoint, riadenie sa odovzda debuggeru, ktory na zaklade definovanych podmienok (napr. na zaklade hodnot v registroch a v pameti) vie rozhodnut co dalej (napriklad na ZX Spektre toto umoznuje Laser Genius debugger).


Ze zajímavosti jsem se podíval na Laser Genius, který podle popisu je Assembler a obsahuje i monitor,který má určité debugovací funkce.Neznám ZX Spectrum organizaci paměti a jak s ní pracuje,ale na C64 v běžné praxi jak program přistupuje k hw je softwarový debugger,který se nahraje jako program,kde obsadí paměť např od $8000 nebo od $C000 nepoužitelný, jelikož může spuštěný program si na danou oblast zapsat data pokud potřebuje (memory depacker, reloc část paměti).Použitelné by to bylo jen pro malé programy,u kterých budu 100% vědět,že mi nepřepisují vektory a nezapisuje nic na oblast,kde mi leží sw debugger,nicméně jeho debugovací možnosti by byly stejně omezené,spíše jako monitor.

Autor:  Busy [ 17.06.2019, 10:55 ]
Předmět příspěvku:  Re: Nativní debugger

Comos píše:
Pokud vám běžící program přepíše vektor tabulku podle své potřeby nebo mění konfiguraci RAM $01 podle potřeby a v případě konfigurace $01 na bez Kernalu si nastavi hardwarouvou IRQ adresu ($FFFE-$FFFF) jak potřebuje,tak jsou nějaký breakpointy k ničemu.
Prave preto som napisal, ze v takych pripadoch sa da pouzit JSR.
Comos píše:
Neznám ZX Spectrum organizaci paměti a jak s ní pracuje,ale na C64 v běžné praxi jak program přistupuje k hw je softwarový debugger,který se nahraje jako program,kde obsadí paměť např od $8000 nebo od $C000 nepoužitelný, jelikož může spuštěný program si na danou oblast zapsat data
Prave preto som vyssie napisal:
Busy píše:
Samozrejme je tu to obmedzenie ze debugger musi byt nahrany niekde v pameti, a tento kus pameti krokovany program potom nemoze pouzivat. Ale s tym sa pri softwerovych debuggeroch pocita.
Bezna prax na ZX je z tohto hladiska rovnaka ako na C64 - kedze ani jeden z procesorov Z80 a 6502 nema chraneny ci virtualny rezim, naostro beziaci program ma (zial) plnu kontrolu nad pocitacom a moze si v nom robit co chce, t.j. aj prepisat pamet v ktorej je nahraty debugger. Avsak pokial program nebezi plnou rychlostou, ale v niektorom z krokovacich rezimov (t.j. debugger vykonava jednotlive instrukcie programu), potom prave debugger ma plnu kontrolu nad pocitacom a vie sa pred prepisanim (ci uz svojho kodu, vektorov pouzivanych preruseni alebo nevhodne nastavenie periferii ci memory layoutu) chranit.

Napriklad debugger v MRS na ZX Spektre ma (okrem inych aj) krokovaci rezim "N" v ktorom debugger takto vykonava instrukcie, pricom nevypisuje registre a ani ziadne informacie, ale vsetky kontroly (ilegalne, instrukcie, pametove okna pre vykonavania kodu a ochrana pred zapisom) su stale aktivne a akekolvek porusenie niektorej z ochran debugger okamzite hlasi. Je pravda, ze program nebezi nativne svojou plnou rychlostou, ale pre jednoduchsie kody je to rychlost dostatocna, dokonca aj cely basic sa takto da "spustit" v debuggeri.

Stránka 12 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/