簡體   English   中英

進程在調試器中崩潰; 我怎么殺死它

[英]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永遠不會退出。

我試過了:

  • 基本中斷: Ctrl + C
  • ps aux | grep 'my-process', ps aux | grep 'my-process',殺死-9 [pid]`。
  • ps aux | grep cgdb ps aux | grep cgdbkill -9 [pid]
  • 上面的sudo版本。

什么都cgdb殺死cgdb或其中運行的進程。

如果我拔掉USB電纜(終止與微處理器的連接),(我認為那可能會使崩潰的進程崩潰),我開始看到正在使用約50%的可用CPU(不確定是什么),並且一切都鎖定了。 沒有使應用程序崩潰。

您如何: (a)在調試進程的過程中干凈退出而不鎖定cgdbgdb所有內容, 或者(b)殺死/干凈地(盡管“ cleanly”只是錦上添花)停止了一個進程在調試時停止了,如果重新啟動就無法 kill -9

您無法殺死正在等待I / O的進程。 從那個時代的曙光開始,對於大多數(如果不是全部)Unix內核都是如此。

聽起來像卡在I / O等待中的調試器(或正在ptrace另一個進程的任何進程)也不能被殺死。

ptrace或pgrep

我會嘗試“ pgrep -l cgdb”非常方便地列出pid ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM