Visual Studio调试时失去响应的解决办法
之前的之前的很久以前写一个小东东时不知道是代码问题还是VS的问题,调试的时候老是整个系统都失去响应
- 所有窗口失去响应
- 但实际上程序还在运行(比如播放器在放,解压文件的操作也在继续),仅仅界面无法刷新
- 开始菜单失去响应
- 任务栏失去响应,任务管理器无法启动(无论是【CTRL + SHIFT + ESC】还是【CTRL + ALT + DELETE】)
- 除了重启或者注销不能做其他任何事情
网上一查也有很多人有这情况,最后把问题锁定在多线程调试上,因为我的VS在单线程程序调试上之前是没问题的。
根据挂掉记录统计觉得我应该也是多线程调试的问题。(还有一种感觉是不是我代码哪里有问题?但仔细看了又看看不出什么问题)
在找到的各种办法中发现下面的方法效果好一点:
- 启动调试之前不要将断点下在任务线程上,或者尽量少下。
- 然后在需要进入线程调试时在主线程下个断点。使得VS中断所有线程中断
- 这时再到工作线程上加个断点,然后F5就等待到工作线程中断吧!
这样确实好一点,不过还是有时挂掉。
后来在一个意外中发现只要结束掉VS即可解决这种问题!,百分百有效。
然后就想了个投机的点子,写个小东东,在Closing时拒绝Close……
遇到这种失去响应的情况就直接选择关机或者注销,然后系统会关闭所有应用程序(用礼貌的方式,即询问你是否可以退出了),关到我那个东东时傻眼了,因为拒绝关闭! 而不知为什么我那东东每次都是最后关的,所以VS就先被解决掉了。然后系统又恢复了。不过好多系统进程也被杀了……
另外一个解决办法就是用输出日志的方式来调试!
其实,最好的办法就是再看看代码!
我很怀疑是不是线程间死锁的问题,或者我的线程导致VS调试器失去响应。因为这个问题肯定是VS调试器造成的。但我那个东东后来就没怎么调试了,用日志调试的。是不是线程死锁,在哪儿锁死了也没查出来,╮(╯▽╰)╭
最后看看在那种情况下有什么奇妙的景象!