如何使用GDB調試多線程
阿新 • • 發佈:2017-06-22
tex color avi ref weight 調式 mark gcc編譯 div
先寫一段多線程程序。
makefile
加上 -g參數生成可調式信息, 可以進行調試。
pthread不是Linux下的默認的庫,也就是在鏈接的時候,無法找到phread庫中哥函數的入口地址,於是鏈接會失敗。在gcc編譯的時候,附加要加 -lpthread參數即可解決。
- gdb test 進入調試
- 需要調試的地方打下斷點,run運行到斷點處。
- r 運行到斷點處,info thread可以查看被調試的線程。
- thread apply all bt 讓所有線程打印堆棧信息
set scheduler-locking off|on|step
在使用step或continue命令調試當前被調試線程的時候,其他線程也是同時執行的,如果我們只想要被調試的線程執行,而其他線程停止等待,那就要鎖定要調試的線程,只讓它運行。
off:不鎖定任何線程,所有線程都執行。
on:只有當前被調試的線程會執行。
step:阻止其他線程在當前線程單步調試的時候搶占當前線程。只有當next、continue、util以及finish的時候,其他線程才會獲得重新運行的。
show scheduler-locking:
這條命令是為了查看當前鎖定線程的模式。
如何使用GDB調試多線程