windows10上的outputdebugstring异常

时间:2017-11-02 05:11:18

标签: winapi windows-10

我将计算机更新到Windows10。

我想在OutputDebugString callstack中引起异常。

当我拨打OutputDebugString时,调用堆就像这样显示。

ntdll.dll!_WerpWaitForCrashReporting@16()
ntdll.dll!_RtlReportExceptionHelper@16()
ntdll.dll!_RtlReportException@12()
ntdll.dll!_RtlpReportInvalidExceptionChain@8()
ntdll.dll!RtlDispatchException()
ntdll.dll!_KiUserExceptionDispatcher@8()
KernelBase.dll!_RaiseException@16()
KernelBase.dll!OutputDebugStringW()

看起来像是Windows错误报告过程。

为什么要发生这种情况?

Windows10中是否已弃用OutputDebugString

感谢。

2 个答案:

答案 0 :(得分:2)

  

为什么会这样?

您的代码在某处出错。可能是堆损坏或传递给函数的无效参数。对于。实例可能是字符串未终止,或者您传递的内存已被释放。

如果我不得不打赌,我希望最终解释是最有可能的。

  

Windows10中是否已弃用OutputDebugString

没有。就像您可能倾向于认为问题与操作系统升级有关一样,这是您的代码的问题。升级恰好突出了代码的问题,这个问题一直存在,但现在才出现。

答案 1 :(得分:0)

OutputDebugString 起作用生成异常。调试器将其捕获为调试事件(“第一次机会”),然后提取字符串参数并显示它。

显示的堆栈中的重要部分是_RtlpReportInvalidExceptionChain。这意味着您的try / catch链已损坏。也许异常处理模型(/ EHsc)不匹配。