如何在异常中使VC ++的调试器中断?

时间:2010-04-14 21:06:01

标签: c visual-c++ debugging exception visual-c++-2008

我正在尝试调试用C编写的DLL中的问题,该问题一直导致访问冲突。我正在使用Visual C ++ 2008,但代码是直接的C。

我已经习惯了Delphi,如果在调试器下运行时发生异常,程序将立即中断到调试器,它将为您提供检查程序状态的机会。但是,在Visual C ++中,我得到的只是Output选项卡中的一条消息:

First-chance exception at blah blah blah: Access violation reading location 0x04410000.没有休息,没有。它只是进入并展开堆栈,直到它回到我的Delphi EXE中,它识别出错误并在那里提醒我,但到那时我已经丢失了几层调用堆栈,我不知道发生了什么。

我已经尝试过其他的调试技术,但无论它在做什么,都是在C宏中的嵌套循环内深处进行的,这个循环被调用超过500次,这只是我的技能(或者我的耐心)跟踪通过

我认为必须有某种方法来获得“第一次机会”的例外,实际上让我有机会处理它。可能有一些“在第一次机会异常时立即中断”配置设置我不知道,但它似乎并不是所有可发现的。

有谁知道它在哪里以及如何启用它?

2 个答案:

答案 0 :(得分:17)

调试菜单中,选择例外,然后选中您希望调试器中断的例外框。 “访问冲突”位于“Win32例外”下。

答案 1 :(得分:1)

您还可以使用“......中的第一次机会例外”行中指定的地址创建数据断点。

继James的回答之后,您正在寻找的例外情况位于Win32例外部分的下方。你应该在那里看到访问冲突。