2011-10-26 19 views

回答

6

你可以使用某種形式的watchdog timer。讓程序定期輸出一個字符或觸摸一個文件,這樣如果它陷入循環中,一個單獨的進程可以檢測到看門狗沒有被更新並終止/重置該進程。

許多微控制器都內置在硬件中,如果不重置定時器,它們會自動復位。它非常方便:)

1

如果該程序,你可以通過給它的PID附加GDB過程,它在服務器上運行。

因此,例如,用ps查找進程的PID:

PS斧| grep的server_process

3789 ?? S  0:00.58 /usr/bin/server_process 
3790 ?? S  0:00.58 /usr/bin/server_process 
18002 ?? S  0:00.58 grep server_process 

你可能想要孩子:

所以使用gdb來連接到正在運行的進程

gdb /usr/bin/server_process 3790 

....負荷符號

gdb> 

快樂追蹤:)

當然用你的程序名稱和路徑替換server_process:P

1

檢測到無限循環稱爲Halting problem,這是不可判定的。

所以原則上沒有辦法來檢測它。