我将计算机更新到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
感谢。
答案 0 :(得分:2)
为什么会这样?
您的代码在某处出错。可能是堆损坏或传递给函数的无效参数。对于。实例可能是字符串未终止,或者您传递的内存已被释放。
如果我不得不打赌,我希望最终解释是最有可能的。
Windows10中是否已弃用
OutputDebugString
没有。就像您可能倾向于认为问题与操作系统升级有关一样,这是您的代码的问题。升级恰好突出了代码的问题,这个问题一直存在,但现在才出现。
答案 1 :(得分:0)
OutputDebugString 起作用生成异常。调试器将其捕获为调试事件(“第一次机会”),然后提取字符串参数并显示它。
显示的堆栈中的重要部分是_RtlpReportInvalidExceptionChain
。这意味着您的try / catch链已损坏。也许异常处理模型(/ EHsc)不匹配。