Jsem asi starý konzervativec, ale myslím si, že Turbo Debugger je a byl hodně nedoceněný. Ten tool byl skutečně hodně promakaný a přitom ho vyvinuli jen dva lidi, a to tuším včetně TUI, které se jen podobalo Turbo vision, ale prý si to napsali celé znovu v assembleru :-) Mít tak klon Turbo Debuggeru pro 32/64 bit linux by byla pecka, uměl toho hodně a aspoň 16bitová verze byla stabilní (win moc ne, ale to "díky" WinAPI). Jo ještě relativně nedávno se dokonce TD nabízel i s Turbo Assemblerem - divné, že zrovna tyto projekty přežily ostatní věci Borlandu (Delphi a spol.).
Aternativa - syntax highlight bez ncurses: https://github.com/antocuni/pdb
Dohackovana podpora pro Base16 Tomorrow Dark theme: https://github.com/antocuni/pdb/issues/36#issuecomment-307630883
No ta IDEčka uměla prakticky všechno, co bylo na tom HW k dispozici - editor se zvýrazněním syntaxe, správu zdrojáků (co se kdy má přeložit a linkovat), symbolický debugger, přímá návaznost na zdroják, sledování proměnných, breakpointy s podmínkami, disassembler (to jen někde) apod. Samozřejmě se správou projektů, takže se to pěkně pamatovalo mezi starty. Pěkná integrovaná nápověda s hypertextem a kontextovým vyhledávání. Všechno docela blbuvzdorně nastavitelné, když jsme to v pohodě používali bez tištěných manuálů, internetu a Stack Overflow :-) Jo a celé TP byl na 1-2 diskety.
Co tam chybělo - podpora pro více vláken (tak jistěěě na DOSu a nějaké té 80286/80386), vzdálené ladění (ale to mnohdy nedají ani GUI debuggery), návaznost na systémy pro správu verzí (to nikdo v té době neznal).
Popravdě pochybuju, že si to takto jednoduše dokážeš nastavit na Emacsu. Ten to sice asi všechno zvládne (kromě té nápovědy), ale že by k tomu přišel nováček a začal používat, to asi ne.
Jen zrychleně jsem to testnul z REPLu a volat to jde prakticky stejně:
$ python3 Python 3.4.3 (default, Nov 28 2017, 16:41:13) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pudb >>> x=42 >>> pudb.set_trace()
a spustí se TUI (v tomto případě bez zdrojáků), ale ten "x" je vidět.
Mám otázku, kdo opravdu tady používá Debugger a k čemu konkrétně? Jde o to, že jsem si tak nějak zvykl
na to, že debugger mě často říká než chci vlastně vědět.
Kolega v práci ve VBA krokuje všechny programy co dělá. Nejsem si jistý jestli je to kvůli tomu, že se ve svém programu ztrácí nebo kvůli tomu, že se tam kombinuje spoustu způsobů.
Já osobně debugger občas používám. Hlavně tedy když píšu v C++. Používám IDE QT Creator a ten debugger v tom je podle mě naprosto úžasný.
Chápu, že to dost možná bude jen nadstavba nad GDB a že praví programátoři by se takových nástrojů štítí. Ale pro mě (pojídače koláčků) to má jednu nedocenitelnou výhodu: je kurňa jednoduchý a vyznám se v tom.
Asi teda nejsem moc dobrý programátor (pořád se učím a jde mi to holt pomalu) a debugger beru jako jako berličku.
A pokud si někde předám blbě nějakou funkci, špatně si posunu iterátor nebo tak něco, tak občas na hledání chyby dovedu pořádně zakysnout. A upřímně, komu se to nikdy nestává?
A to, že si prostě rovnou ve zdrojáku kliknu na "add breakpoint here", pak to pustím ve debuggeru a na problematickém místě (resp. na místě, o kterém si myslím, že je tam problém) si prohlédnu lokální proměnné, podívám se do struktur a nebo si i můžu nechat vyhodnotit výraz, je někdy moc užitečný.
Krokování mi asi zatím nikdy moc nepomohlo, ale třeba to někdy taky použiju.
čím složitější zdroják a čím méně komentářů, tím víc se musím spolehnout na debugger, že mi ukáže, co vlastně původní autor myslel :-)
a někdy (ale dnes už ne tak často, přešel jsem na jiné jazyky) byla k nezaplacení možnost prozkoumat core dumpy.
ideální je stav, kdy debugger dokáže provádět hot swapping (například Eclipse/IDEA atd, pro JVM), to se potom daji krásně opravovat chyby v živé aplikaci
Já si bez debuggeru nedokážu představit život. Ano, jednoduché věci lze projít a domyslet, ale 10+ roků staré projekty vyvíjené různými lidmi dokážou být spletité.
Používám "pydevd+eclipse", výhoda je že na jakémkoliv stroji pustím "import pydevd; pydevd.settrace(eclipse_ip_addr, True, True)", eclipse si stáhne zdrojáky (RO) či použiju sshfs (RW) a můžu se koukat jak přesně se co vykonává.
Další velká výhoda je v řešení souběhu, není problém si pozastavit jednotlivá vlákna a dostat se přesně tam, kam člověk potřebuje.