我有一個C++應用程序,它通過USB串行鏈接連接到微處理器(類似於Arduino)。我使用termios.h
作爲我的序列包裝。進程在調試器中崩潰;我如何殺死它
我在Mac OS X 10.7.3
上使用cgdb
進行調試。
當我:
cgdb build/my-process
- 設置一些斷點,等等,做一些調試
- 發現錯誤,或嘗試退出內部
cgdb
kill
的
仍然在運行過程
該過程掛起。 cgdb
拒絕永遠殺死進程 - 只是坐在那裏。我相當當然這是因爲如果我kill
從應用程序的中途,我從來沒有發佈我正在訪問微控制器通過的/dev/ttyUSB
設備。我不確定是否有東西被鎖定,永不解鎖,但cgdb
永遠不會退出。
我已經試過:
- 基本中斷:按Ctrl +ç
ps aux | grep 'my-process',
殺-9 PID]`。ps aux | grep cgdb
,kill -9 [pid]
。sudo
以上版本。
沒有殺死cgdb
或其中運行的進程。
如果我卸下USB電纜(終止與微處理器的連接),(我認爲這可能會導致崩潰的進程崩潰),我開始看到~50%的可用CPU正在使用(不知道是什麼),並且一切都鎖定了。我不要設法使應用程序崩潰。
你如何:(一)退出乾淨不從cgdb
或gdb
鎖定了一切,而在調試過程中,或(b)殺/乾淨(雖然「乾淨」的中間只想在錦上添花)停止一個進程,當你在調試時停止,不是響應kill -9
沒有重新啓動?
我可以設置一個超時或類似的,如果我不能徹底殺死它? – simont 2012-02-25 21:03:52
不,它本質上是一個不可中斷的狀態。退出狀態的唯一方法是成功或不成功完成內核I/O操作。 – smparkes 2012-02-25 21:07:26
這是一個輕微的痛苦 - 謝謝。我一直在抨擊我的頭腦,試圖找出如何殺死這個愚蠢的東西幾天。 – simont 2012-02-25 21:16:10