1. 程式人生 > >linux gdb執行不下去的程式除錯方法

linux gdb執行不下去的程式除錯方法

daemon程式一般都要停止父程序,重新設定會話,這樣的程式gdb到這裡就會結束,無法跟蹤到下一步。

要除錯這樣的程式有幾種方法:

1、這些程式一般都是有while迴圈或者等待阻塞(例如伺服器程式),這樣的話,一般的可以讓程式先執行起來,然後用gdb除錯子程式;

2、考慮另一種情況,如果在makeDaemon成功之後到while迴圈之前的程式碼出問題了,程式直接退出了,怎麼除錯?

日誌是一種方法,但是效率稍低。

其實也可以用gdb,但是先讓程式停在makeDaemon成功之後。

在這之後呼叫如下程式碼,就可以讓程式停下來:

kill(getpid(),SIGSTOP);

gdb除錯:

# gdb test `pid test` -d testdir

進去後繼續除錯方法:

A、打斷點,呼叫kill命令:kill -s CONT pid

B、gdb視窗輸入n,回車,連續三次,自動執行到kill程式碼的下一行。

繼續。。。