异常时无法正确获取调用堆栈
Posted
技术标签:
【中文标题】异常时无法正确获取调用堆栈【英文标题】:Cannot Get Call Stack Correctly on Exception 【发布时间】:2018-10-16 10:02:02 【问题描述】:我正在使用 Visual C++ 2008 编写一个自动化 Word 应用程序。我设置了调试器,以便它会在 CException 和 COleException 上中断。在调试的时候,有时我会在以下异常处中断:
MyApp.exe 中 0x7641c54f 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x068cdbe0 处的 COleException。
此时断点在函数_malloc_dbg中,当我查看调用堆栈时,会得到如下:
它说“下面的帧可能不正确和/或丢失,没有为 KernelBase.dll 加载符号”。但是我的程序是使用调试配置构建的。异常时如何获取调用栈?
谢谢
【问题讨论】:
【参考方案1】:由于您使用的是 VS 2008,不确定这是否有帮助,但请查看:Symbols for kernelbase.dll could not be downloaded - UWP, Release build only, after Windows 10 update
据我所知,您正在使用符号和调试信息构建应用程序,但使用的核心库(在本例中为 KernelBase.dll)不是使用调试符号构建的。您需要获取或启用 KernelBase.dll 的调试符号。
编辑:https://social.msdn.microsoft.com/Forums/vstudio/en-US/9a95bb8f-b263-4b0c-ae9c-35023c210a11/kernelbasepdb-not-included?forum=vsdebug
看来你需要kernelbase.pdb
【讨论】:
以上是关于异常时无法正确获取调用堆栈的主要内容,如果未能解决你的问题,请参考以下文章