Visual Studio是否有“打破你的位置”的功能?
问题描述:
最近我们已经开始在我们的引擎中遇到无限循环,我不知道如何有效地对抗它们。该应用程序简单地冻结永恒,我无法阻止它的执行,以了解发生了什么。在主要位置放置正常断点(更新循环)什么也不做。我几乎可以肯定,问题出现在一个持续运行的循环中,但由于代码的大小,我甚至无法开始猜测在哪里寻找它。Visual Studio是否有“打破你的位置”的功能?
所以,我的问题是你如何打破应用程序在Visual Studio中的执行在代码中的某个任意位置,那里的应用恰好在那个时间?类似于“待在你身边”的东西。这在理论上是可能的吗?
答
当然,使用Debug + Break All。
这当然不一定会破坏您的程序,而只会发生与您的程序中某个语句匹配的好地址。如果设置断点没有调用中断,那很可能。您很可能会看到调试器发出的无法显示源代码的通知。或者就此而言,它可能没有选择正确的线程。
所以你要做的第一件事就是使用Debug + Windows + Threads并确保选择了正确的线程。双击你想调试的那个。接下来你要做的就是查看Debug + WIndows + Call Stack窗口。它至少应该展示一些你的方法,给你一个提示它是如何结束在永远不会有土地的。
它不是不可能在本地代码或操作系统调用上死锁。要看到这一点,您需要启用非托管调试。项目+属性,调试,勾选“启用本地代码调试”。并确保已启用符号服务器,以便您可以获取操作系统DLL的调试信息。工具+选项,调试,符号。
您是否尝试了暂停按钮?第二个按钮在左边,第二行在http://www.kipirvine.com/asm/debug/vstudio2010/S5.gif – sisve 2014-08-28 11:12:01
噢,现在我很惭愧地问这个问题:)。但是,有一件事我真诚地阅读了MSDN关于断点的文章,并在询问之前使用了google搜索。如果你想发布这个作为aswer我会接受它。 – cubrman 2014-08-28 11:30:37