单步执行源代码行导致Visual Studio调试器退出?

时间:2012-10-24 00:29:32

标签: c++ visual-studio-2010 debugging disassembly

我的客户在我们的产品中报告了使用混合代码的假设资源泄漏。所以我想调试它,看看到底发生了什么。我一直在经历像Visual Studio崩溃,在单步执行代码时冻结以及调试器只是在退出代码错误的随机点停止时的奇怪现象。

我把它缩小到导致它的非托管函数,它是从另一个线程与主线程开始的函数。我一直在想我有确切的代码行导致它,但问题的位置似乎在不断变化。所以我到了问题的大致位置,开始逐行逐步完成汇编代码。

我甚至将断点移动到函数首次开始的位置,当调试器到达该点时,如果我跳过它,它将退出。如果我将断点设置为20行而不是函数,执行会使它到达那一点,然后我跳过它并且调试器退出,所以我不相信它与我的函数在{{ }。

当我使用F10执行此操作时,调试器停止,退出代码为STATUS_WX86_BREAKPOINT,当我使用F11执行此操作时,它将以退出代码STATUS_WX86_SINGLE_STEP停止。根据步进的类型,错误代码的名称对我有意义,但不能真正告诉我什么是错的。当我再次运行它时,我尝试在拆卸时通过断点移动,以为我会看到之前发生的事情,退出只是提前发生,所以它非常烦人。我之前从未遇到过这样的事情,也无法找到这个错误真正意味着我做错了什么?

有时候,Visual Studio只会锁定我,而不是退出错误的代码。

1 个答案:

答案 0 :(得分:0)

我倾向于同意@paddy的评论,看起来问题来自不同的线程。 你有没有设置VS在第一次机会异常时停止?
在你的情况下,因为它是非托管代码,我会设置调试器停止在win32异常和C ++异常(所有这些)。
如果您不知道可以从调试菜单中执行此操作 - >例外...