服務器程序處於無限循環狀態。如何檢查它?服務器程序處於無限循環狀態。如何檢查它?
我的解決辦法:
使用gdb來檢查控制循環條件變量的值。
小程序可以。
如何做大型項目?
如果程序沒有在GDB中運行,如何檢測無限循環?
感謝
服務器程序處於無限循環狀態。如何檢查它?服務器程序處於無限循環狀態。如何檢查它?
我的解決辦法:
使用gdb來檢查控制循環條件變量的值。
小程序可以。
如何做大型項目?
如果程序沒有在GDB中運行,如何檢測無限循環?
感謝
你可以使用某種形式的watchdog timer。讓程序定期輸出一個字符或觸摸一個文件,這樣如果它陷入循環中,一個單獨的進程可以檢測到看門狗沒有被更新並終止/重置該進程。
許多微控制器都內置在硬件中,如果不重置定時器,它們會自動復位。它非常方便:)
如果該程序,你可以通過給它的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
檢測到無限循環稱爲Halting problem,這是不可判定的。
所以原則上沒有辦法來檢測它。
聽起來像暫停問題? – Mysticial