[英]Process crashed in debugger; how do I kill it
我有一個C ++應用程序,它通過USB串行鏈路連接到微處理器(類似於Arduino)。 我使用termios.h
作為串行包裝器。
我正在Mac OS X 10.7.3
上使用cgdb
進行調試。
當我:
cgdb build/my-process
cgdb
內部的kill
退出仍在運行的進程 該過程掛起。 cgdb
拒絕cgdb
該進程-只是坐在那里。 我相當肯定,這是因為如果我kill
通過應用從半路,我從來沒有放開/dev/ttyUSB
我通過訪問微控制器設備。 我不確定是否有東西被鎖定並且從未解鎖,但是cgdb
永遠不會退出。
我試過了:
ps aux | grep 'my-process',
ps aux | grep 'my-process',
殺死-9 [pid]`。 ps aux | grep cgdb
ps aux | grep cgdb
, kill -9 [pid]
。 sudo
版本。 什么都cgdb
殺死cgdb
或其中運行的進程。
如果我拔掉USB電纜(終止與微處理器的連接),(我認為那可能會使崩潰的進程崩潰),我開始看到正在使用約50%的可用CPU(不確定是什么),並且一切都鎖定了。 我沒有使應用程序崩潰。
您如何: (a)在調試進程的過程中干凈退出而不鎖定cgdb
或gdb
所有內容, 或者(b)殺死/干凈地(盡管“ cleanly”只是錦上添花)停止了一個進程在調試時停止了,如果不重新啟動就無法 kill -9
?
您無法殺死正在等待I / O的進程。 從那個時代的曙光開始,對於大多數(如果不是全部)Unix內核都是如此。
聽起來像卡在I / O等待中的調試器(或正在ptrace
另一個進程的任何進程)也不能被殺死。
ptrace或pgrep
我會嘗試“ pgrep -l cgdb”非常方便地列出pid ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.