cub*_*man 3 debugging breakpoints visual-studio-2012
我们最近开始在我们的引擎中遇到无限循环,我不知道如何有效地对抗它们.该应用程序只是冻结永恒,我无法阻止它的执行,以了解正在发生的事情.在主要位置放置正常断点(更新循环)什么都不做.我几乎可以肯定问题是在一个连续运行的循环中,但是由于代码的大小,我甚至无法开始猜测在哪里寻找它.
所以,我的问题是你如何在代码中的某个任意位置破坏应用程序在Visual Studio中的执行,那时应用程序正好在那个时候?类似于"留在你身边"的东西.它在理论上是否可能?
当然,使用Debug + Break All.
这当然不一定会破坏你的程序在一个恰好匹配程序中的一个语句的好地址.很可能如果设置断点没有调用中断.您可能会看到调试器发出无法显示源代码的通知.或者就此而言,它可能没有选择正确的线程.
所以你要做的第一件事是使用Debug + Windows + Threads并确保选择了正确的线程.双击要调试的那个.接下来你要做的就是查看Debug + WIndows + Call Stack窗口.它应该至少显示你的一些方法,给你一个暗示它是如何最终永远不会落地的.
并且它不可能在本机代码或操作系统调用上遇到死锁.要看到这一点,您需要启用非托管调试.项目+属性,调试,勾选"启用本机代码调试".并确保您已启用符号服务器,以便获得操作系统DLL的调试信息.工具+选项,调试,符号.