我有一个C++应用程序,它通过USB串行链路连接到微处理器(类似于Arduino).我termios.h用作我的串行包装器.
我cgdb在Mac OS X上调试使用10.7.3.
当我:
cgdb build/my-processkillcgdb这个过程挂了.cgdb拒绝杀死这个过程 - 只是坐在那里.我相当肯定,这是因为如果我kill从半途应用,我从来没有放开/dev/ttyUSB我通过访问微控制器设备.我不确定某些东西是否被锁定并且从未解锁,但cgdb永远不会退出.
我试过了:
ps aux | grep 'my-process',kill -9 [pid]`. ps aux | grep cgdb,kill -9 [pid].sudo 以上版本. 没有任何东西杀死它cgdb或在其中运行的进程.
如果我移除USB电缆(终止与微处理器的连接),(我认为可能会崩溃崩溃的过程),我开始看到~50%的可用CPU被使用(不确定是什么),一切都锁定了.我没有设法让应用程序崩溃.
你怎么了:(一)退出干净而不从上锁定一切cgdb或gdb同时在调试过程中,或(b)杀/干净(虽然"干净"将只是锦上添花)停止也停掉的,而一个过程你正在调试它没有重新启动时没有响应?kill -9
你无法杀死I/O等待中的进程.对于大多数(如果不是全部)Unix内核来说,从那个时代开始就是如此.
它听起来像一个调试器(或任何ptrace另一个进程),卡在I/O等待中也不会被杀死.