代码之家  ›  专栏  ›  技术社区  ›  Mason Wheeler

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

  •  13
  • Mason Wheeler  · 技术社区  · 14 年前

    我试图调试一个用c编写的dll中的问题,这个问题一直导致访问冲突。我使用的是Visual C++ 2008,但代码是直接C。

    我习惯了delphi,如果在调试器下运行时发生异常,程序将立即中断到调试器,这将给您一个检查程序状态的机会。但是,在Visual C++中,我得到的只是输出选项卡中的一条消息:

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

    我尝试过其他的调试技术,但是不管它做什么,都是在一个c宏的嵌套循环中进行的,这个c宏被调用了500多次,这超出了我的技能(或者说我的耐心)的范围。

    我想应该有办法让“第一次机会”例外真正给我一个处理的“机会”。可能有一些我不知道的“一有机会就立即中断”配置设置,但似乎并没有那么容易被发现。

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

    2 回复  |  直到 14 年前
        1
  •  17
  •   James McNellis    14 年前

    调试 菜单选择 例外情况 并选中希望调试器中断的异常框。““访问冲突”在“win32异常”下。

        2
  •  1
  •   Mark Ingram    14 年前

    您还可以使用在“第一次机会异常位于…”行中指定的地址创建数据断点。

    根据james的回答,您要查找的异常在win32异常部分下面。你应该在那里看到访问冲突。