无法获取转储的调试符号
Cannot obtain debugging symbols for dumps
尝试在windbg/VS中调试迷你转储。无法获取9.0.30729.8387
版本的msvcr90
的符号。试图做.symfix
。如果我为我的应用程序符号设置同情,我可以得到我的代码的一部分调用堆栈,但不是msvcr。如果我使用.symfix
,我可以部分地从c运行时获得几个调用,但是,显然,不是从我的代码。
!sym noisy
without .symfix
:
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: http://msdl.microsoft.com/download/symbols/msvcr90.dll/51EA1BBDa3000/msvcr90.dll not found
DBGHELP: C:Program FilesDebugging Tools for Windows (x64)msvcr90.dll - file not found
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: \eserversymstoremsmsvcr90.dll51EA1BBDa3000msvcr90.dll not found
SYMSRV: http://msdl.microsoft.com/download/symbols/msvcr90.dll/51EA1BBDa3000/msvcr90.dll not found
DBGENG: C:WindowsWinSxSamd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5msvcr90.dll - Couldn't map image from disk.
Unable to load image C:WindowsWinSxSamd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5msvcr90.dll, Win32 error 0n2
DBGENG: msvcr90.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
*** WARNING: Unable to verify timestamp for msvcr90.dll
我能看到的最后一件事是msvcr90!_freefls
的调用。在所有的方法中,我只能得到调用堆栈的一部分,我需要全部。是否有办法获得正确的符号?9.0.30729.6871
的符号也有类似的问题。
客户端操作系统:Windows Server 2012 (build 9200) 64位,Windows 7 (build 7600) 64位,Windows Vista (build 6000) 64位,Windows Server 2008 R2 (build 7600) 64位。
您可以设置多个符号路径,以便调试器可以从多个位置获取符号。
.Symfix
是运行的第一个命令。然后使用
.sympathy+ c:<My_symbols>
上面的另一个问题是
Couldn't map image from disk.
来源于
DBGENG: C:WindowsWinSxSamd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5msvcr90.dll - Couldn't map image from disk.
Unable to load image C:WindowsWinSxSamd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5msvcr90.dll, Win32 error 0n2
DBGENG: msvcr90.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
我会再复制一个文件,并将你的符号路径指向那个文件,看看调试器是否可以从那里加载它。
解决了客户端操作系统附带调试器的再现问题。
相关文章:
- VC++本机单元测试,找不到调试符号
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- 有没有一种预处理器的方法可以从调试符号中删除代码段
- 简单的cmake项目,在Windows上使用nmake构建没有调试符号
- 重新定位源文件时读取调试符号
- 如何将libc++与调试符号链接起来?
- 在 gdb (Windows) 中添加 dll 的调试符号
- 从静态库中去除/删除调试符号和存档名称
- Nodejs本机模块 - 如何删除调试符号
- 如何告诉 clang 将调试符号放入可执行二进制文件中
- G++ 不生成调试符号
- 如何为安卓原生应用生成调试符号
- Makefile和QT5:链接QT5与调试符号
- 找不到调试符号
- 我如何检查静态库,以查看是否正在导出调试符号
- 公开使用多种语言编译的程序的调试符号
- 用调试符号编译需要其他库
- 程序在没有调试符号的情况下崩溃,运行良好(两种情况下都没有优化或任何内容)
- 如何在不调试符号的情况下确定从外部库引发的异常
- 找不到GDB调试符号