Portál AbcLinuxu, 14. května 2025 02:12

Dotaz: jak na trasování v gdb?

hajma avatar 16.7.2007 16:32 hajma | skóre: 27 | blog: hajma | Říčany
jak na trasování v gdb?
Přečteno: 421×
Odpovědět | Admin
Ahoj, určitě je to někde strašně na očích, ale fakt jsem na to vlastníma silama nepřišel:

Mám program, který po asi 2 sekundách běhu zamrzne mašinu. Takže chci zjistit, co se děje. Spustím ho v gdb a chtěl bych, aby se někam zapisovaly všechny řádky, který ten program vykoná. Ono mi to sice funguje, dám

set logging on

a

set logging file finename

a pak mačkám s, ale to je poněkud nepraktický, protože je to potřeba zmáčknout několik setkrát. s + poček kroků je zase nanic, protože ty kroky mezitím se nevypíšou... Jak na to? díky.
21 promarněných znaků
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.7.2007 09:12 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: jak na trasování v gdb?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Máš k nemu zdrojáky? Poznáš strace? Čo to znamená, že "zmrzne mašinu"? Čo breakpointy?
hajma avatar 23.10.2008 00:24 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: jak na trasování v gdb?
zdrojaky mam; strace znam (nevyhovuje); zamrzne = smrt X, nekdy se ani nejde prihlasit pres ssh
21 promarněných znaků
23.10.2008 08:07 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: jak na trasování v gdb?
To asi nebude moc akútne, keď si to vyše roka neriešil ;-)

Prečo by strace nevyhovoval? Pokiaľ ten program nie je ovládač v jadre, tak by nemal systém zhodiť, môže ho nanajvýš tak zahltiť. V tom prípade by som radil trocha ho obmedziť cez ulimit. Ak ho skutočne zhodí a nie je to ovládač v jadre, tak prejdi na novšie jadro, pokiaľ možno vanilla. Ďalšia možnosť je použiť "printf debuger" - skrátka do zdrojákov roztrúsiť výpisy na stdout a podľa nich usúdiť pokiaľ sa ten program dostane.

Keď trváš na gdb, tak si cez yes vyrob súbor, ktorý obsahuje milión riadkov s textom "next" a daj ho debuggeru cez prepínač -x. Alebo sa pozri na príkaz command v gdb - použi v ňom silent, print, continue atď

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.