Visual Studio调试时失去响应的解决办法

之前的之前的很久以前写一个小东东时不知道是代码问题还是VS的问题,调试的时候老是整个系统都失去响应

  • 所有窗口失去响应
  • 但实际上程序还在运行(比如播放器在放,解压文件的操作也在继续),仅仅界面无法刷新
  • 开始菜单失去响应
  • 任务栏失去响应,任务管理器无法启动(无论是【CTRL + SHIFT + ESC】还是【CTRL + ALT + DELETE】)
  • 除了重启或者注销不能做其他任何事情

网上一查也有很多人有这情况,最后把问题锁定在多线程调试上,因为我的VS在单线程程序调试上之前是没问题的。

根据挂掉记录统计觉得我应该也是多线程调试的问题。(还有一种感觉是不是我代码哪里有问题?但仔细看了又看看不出什么问题)

在找到的各种办法中发现下面的方法效果好一点:

  1. 启动调试之前不要将断点下在任务线程上,或者尽量少下。
  2. 然后在需要进入线程调试时在主线程下个断点。使得VS中断所有线程中断
  3. 这时再到工作线程上加个断点,然后F5就等待到工作线程中断吧!

这样确实好一点,不过还是有时挂掉。

后来在一个意外中发现只要结束掉VS即可解决这种问题!,百分百有效。

     然后就想了个投机的点子,写个小东东,在Closing时拒绝Close……

     遇到这种失去响应的情况就直接选择关机或者注销,然后系统会关闭所有应用程序(用礼貌的方式,即询问你是否可以退出了),关到我那个东东时傻眼了,因为拒绝关闭! 而不知为什么我那东东每次都是最后关的,所以VS就先被解决掉了。然后系统又恢复了。不过好多系统进程也被杀了……

另外一个解决办法就是用输出日志的方式来调试!

其实,最好的办法就是再看看代码!

     我很怀疑是不是线程间死锁的问题,或者我的线程导致VS调试器失去响应。因为这个问题肯定是VS调试器造成的。但我那个东东后来就没怎么调试了,用日志调试的。是不是线程死锁,在哪儿锁死了也没查出来,╮(╯▽╰)╭

 

最后看看在那种情况下有什么奇妙的景象!

 

    

posted @ 2009-03-08 12:45  eager eagle  阅读(4441)  评论(9编辑  收藏  举报