一、info threads:
這條命令顯示的是當前可調試的全部線程,GDB會給每個線程都分配一個ID。前面有*的線程是當前正在調試的線程。
二、thread ID:
切換到當前調試的線程爲指定爲ID的線程。
三、thread apply all command:
讓全部被調試的線程都執行command命令
四、thread apply ID1 ID2 … command:
這條命令是讓線程編號是ID1,ID2…等等的線程都執行command命令
五、set scheduler-locking off|on|step:
在使用step或continue命令調試當前被調試線程的時候,其餘線程也是同時執行的,若是咱們只想要被調試的線程執行,而其餘線程中止等待,那就要鎖定要調試的線程,只讓它運行。
off:不鎖定任何線程,全部線程都執行。
on:只有當前被調試的線程會執行。
step:阻止其餘線程在當前線程單步調試的時候搶佔當前線程。只有當next、continue、util以及finish的時候,其餘線程纔會得到從新運行的。
六、show scheduler-locking:
這條命令是爲了查看當前鎖定線程的模式。 多線程
7.i threadsapp
實現線程間切換spa
9.-g -rdynamic線程
在生成調試信息的時候加入 -g -rdynamic選項,而後gdb啓動調試程序時,直接run,就能找出錯誤信息所在的地方調試
一個小提示:blog
在輸入gdb xx時,進入gdb命令,這時會輸出一些信息。如上所示,這些信息大多都是關於gdb的一些信息,能夠不讓他輸出,進程
如:gdb -q xxtable
這裏面a是我生成的調試信息的文件名。多進程
默認設置下, 在調試多進程程序時 GDB 只會調試主進程. 可是 GDB > V7.0 支持多進程的分別以及同時調試, 換句話說, GDB 能夠同時調試多個程序. 只須要設置 follow-fork-mode (默認值 parent) 和 detach-on-fork (默認值 on )便可.thread
follow-fork-mode | detach-on-fork | 說明 |
parent | on | 只調試主進程(GDB默認) |
child | on | 只調試子進程 |
parent | off | 同時調試兩個進程,gdb 跟主進程, 子進程 block 在 fork 位置 |
child | off | 同時調試兩個進程, gdb 跟子進程, 主進程 block 在 fork 位置 |