2016-12-08 40 views
2

我想將gdb附加到一個進程,在該進程中,我無法輕鬆控制進程的啓動,因爲它是從inetd運行的,並且進程完成得太快而無法啓動一旦啓動就附加到它。暫停進程以允許調試器附加時間

我想要做的是在我想開始調試的特定點插入一些代碼。該代碼將理想地等待調試器附加並繼續。我嘗試過睡覺,但選擇延遲時間足夠長以至於我有時間趕上它,但時間足夠短,不會在等待gdb連接後等待它的滋擾。

有沒有更好的代碼插入或調用此選項?

+0

您還可以'設置follow-fork-mode child'來調試新的子進程。 – ks1322

回答

3

我想要做的是在我想開始調試的特定點插入一些代碼。

我通常不喜歡這樣:

volatile int done = 0; 
while (!done) sleep(1); 

連接GDB(你會在裏面sleep)。執行finish,然後set var done = 1,並享受其餘的調試會話;-)