我正在尝试调试用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次,这只是我的技能(或者我的耐心)跟踪通过
我认为必须有某种方法来获得“第一次机会”的例外,实际上让我有机会处理它。可能有一些“在第一次机会异常时立即中断”配置设置我不知道,但它似乎并不是所有可发现的。
有谁知道它在哪里以及如何启用它?
答案 0 :(得分:17)
在调试菜单中,选择例外,然后选中您希望调试器中断的例外框。 “访问冲突”位于“Win32例外”下。
答案 1 :(得分:1)
您还可以使用“......中的第一次机会例外”行中指定的地址创建数据断点。
继James的回答之后,您正在寻找的例外情况位于Win32例外部分的下方。你应该在那里看到访问冲突。