在多线程调试的时候(XP操作系统下),经常会出现死机的现象,不得不进行重启才能解决。
后来找到一个名为antifreeze的国外软件,在几乎死机的时候还可以调用该程序,将环境进程结束掉。
另外发现,VC环境下,在设置断点断下的时候,这个时候即使用任务管理器无法将此刻调试的进程结束掉,这是为什么?我的问题是,在系统几乎死机的时候,如果让自己的程序还能获取CPU分配的时间,将我需要结束的进程结束掉?谢谢普通方法都试了,不行,因为多线程死机的时候,几乎没有程序可以响应了。

解决方案 »

  1.   

    一个偏方:在你的程序中启动一个console窗口,然后执行调试去,如果出现任何问题,console窗口还是能响应的,直接关闭console窗口就能退出你的进程
      

  2.   

    多线程调试的时候,确实是会经常假死,但是可以用以下方法解决(本人经验。^^)
    打开记事本,写一些东西,别保存,当调试发生假死的时候。可以按ctrl+alt+del选择注销,系统会把VC给结束掉,之后会问时候保存文件,点取消即可恢复正常。从而避免重新启动机器。以前编译过一个GINA(代码不是我的)。就是对付VC调试造成系统假死的。同样有效。---------------------
    我的问题是,在系统几乎死机的时候,如果让自己的程序还能获取CPU分配的时间,将我需要结束的进程结束掉?谢谢 普通方法都试了,不行,因为多线程死机的时候,几乎没有程序可以响应了。
    ----------------------
    你说的这些话是不对的,首先假死的时候,系统还可以快速响应热键!例如ctrl+alt+del,antifreeze也是如此。其次,发生假死的时候CPU空闲接近100%!不信你就按下热键,选择任务管理器。第三,antifreeze接收到热键,会切换到另外一个桌面,并挂起所有的线程,结束进程应该是TerminateProcess,我在调试器里发现它被调用。第四,要结束的进程不是被调试进程,而是VC。