1、如果乙個程序通過fork系統呼叫建立了子程序,gdb會繼續除錯原來的程序,子程序則正常執行。除錯子程序的方法有兩種
(1)單獨除錯子程序(因為子程序從本質上來說也是乙個程序,所以可以通過gdb進行除錯)
(2)使用偵錯程式選項 follow-fork-mode
這個選項允許我們選擇程式在執行fork系統呼叫後是繼續除錯父程序還是除錯子程序。具體命令如下:
注意:未被選擇的程序會直接執行結束
(1)info threads 顯示當前可除錯的所有執行緒
(2)thread id 除錯目標id指定的執行緒
(3)set scheduler-locking off | on | step
off : 表示不鎖定任何執行緒,即所有執行緒都可以繼續執行
on : 只有當前被除錯的執行緒繼續執行
step: 在單步執行的時候,只有當前執行緒會執行
(gdb)bt /*顯示子執行緒的呼叫棧*/
先將池中的程序個數或執行緒數減少至1,以觀察程式的邏輯是否正確,然後逐步增加程序或執行緒數量,以除錯程序或執行緒的同步是否正確
多程序 多執行緒除錯
啟動gdb除錯 gdb jccc 設定預設跟蹤子程序 gdb set follow fork mode child 設定當程式在gdb中停止,只有當前的執行緒會被停止,而其他的執行緒將會繼續執行 gdb預設程序的所有執行緒都會停止 gdb set non stop on 接下來設定斷點 gdb b ...
多程序 多執行緒除錯
一 執行緒除錯 程序啟動執行緒,是可以使用od除錯到執行緒中去的 是在waitforsingleobject這裡,之後就是cpu調到執行緒中去了,我們只需要在createthread 中的執行緒函式中下斷點就能斷下來 二 程序除錯 2.1 od除錯時,是不會調到新程序中 關鍵函式 createpro...
gdb除錯多程序和多執行緒
程序 1 預設設定下,在除錯多程序程式時gdb只會除錯主程序。但是gdb支援多程序的分別以及同時除錯,也就是說,gdb可以同時除錯多個程式。只需要設定follow fork mode和detach on fork即可。設定方法 a 啟動gdb b set follow fork mode paren...