【问题标题】:MFC Unhandled exceptionMFC 未处理的异常
【发布时间】:2013-07-05 07:38:21
【问题描述】:

我正在构建一个程序,过去几天它运行良好。当我今天运行它时,它会显示Unhandled exception at 0x7770efc8 in LHM.exe: 0xC0000005: Access violation writing location 0x00440f48.

ntdl.dll!7770fb12()
在下面的调用堆栈中,它表明下面的帧可能不正确和/或丢失,没有为 ntdll.dll 加载符号。

我发现 ntdl.dll!7770fb12() 在反汇编中是 7770FB12 push esi

有没有办法解决这个问题?

【问题讨论】:

  • 需要...更多...上下文...
  • 您需要在出现问题的地方发布源代码。
  • @RogerRowland 因为他的堆栈听起来已经损坏,我敢打赌他不知道。最好的办法是调试它,看看它在哪里遇到访问冲突,或者寻找任何可能不正确地写入缓冲区的东西。
  • 这个问题是在我启动调试模式时出现的。我不知道我在哪里或什么时候出错了..
  • @TheForestAndtheTrees 是的。我是一个新程序员。如何定位出现问题的源代码?

标签: c++ dll mfc unhandled-exception


【解决方案1】:

即使调用堆栈没有显示任何特定位置,代码中的调用最终会导致 ntdll.dll,但在大多数情况下,您可以通过从头开始逐步执​​行代码来确定调用。如果你的代码太大,尝试随机设置断点,不断缩小范围。

这是一些非常基本且可能很粗略的调试过程,但它对我有很大帮助...

【讨论】:

    【解决方案2】:

    “下面的帧可能不正确”绝对不是堆栈损坏的迹象。如果您从 MS 服务器加载 ntdll 的公共符号(从 IDE 轻松完成 - 例如,在“模块”窗口中右键单击 ntdll),这很容易解决。

    here 可以更深入地了解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      相关资源
      最近更新 更多