Co se tyce vypisovani, mam ty nejlepsi zkusenosti, stejne ale pak ve finalu kontruluji vysledek v gdb, kdyz z logu zjistim kde to padlo.
Jinak gbd umoznuje 'logovani' programu, ja osobne jsem to sice zatim jeste nikdy nepotreboval, ale kdyz si das v gdb 'help tracepoints' dozvis se vice.
Dalsi velice uzitecnou featurkou gdb je prikaz set, ktery umoznuje menit hodnotu zvolene promenne (registru, ...).
Casto pouzivam prikaz watch, kdyz chci, aby se program zastavil pri zmene hodnoty nejake promenne, pripadne kdyz nabyde nejake konkretni hodnoty.
Tenhle prikaz ma jedinou nevyhodu a to je, ze kdyz ho pouzijete na lokalni promenne, tak po opusteni bloku, kde jsou definovany se toto nastaveni zapomene.
Reseni je udelat si break na vstupu do tohoto bloku a nastavit si v nem ten watch jak ho chcete mit.
pouzivam tyhle prikazy
help thread :)
info thread : vypise seznam threadu
thread N : prepne do threadu N
thread apply N command : v threadu N provede prikaz command
nazorny priklad (proces vytvori thread ve kterem je pause() a potom si da taky pause())
Program received signal SIGINT, Interrupt.
0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) info threads
2 process 1081385 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
1 process 1081385 0xb032a0e5 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) thread 1
[Switching to thread 1 (process 1081385)]#0 0xb032a0e5 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) info threads
2 process 1081385 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
* 1 process 1081385 0xb032a0e5 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) thread 2
[Switching to thread 2 (process 1081385)]#0 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) info threads
* 2 process 1081385 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
1 process 1081385 0xb032a0e5 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) thread apply 1 break main
Thread 1 (process 1081385):
Breakpoint 1 at 0x8048512: file ../src/main.c, line 15.
#0 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
(gdb) info threads
* 2 process 1081385 0xb032a0e6 in SignalWaitinfo () from /x86/lib/libc.so.2
1 process 1081385 0xb032a0e5 in SignalWaitinfo () from /x86/lib/libc.so.2