[英]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.