C++ 无法获取转储的调试符号

C++ 无法获取转储的调试符号,c++,windows,debugging,crash-dumps,C++,Windows,Debugging,Crash Dumps,尝试在windbg/VS中调试小型转储时,无法获取版本9.0.30729.8387的msvcr90的符号。正在尝试执行.symfix。如果我为我的应用程序符号设置sympath,我可以得到调用堆栈的一部分,而不是msvcr。如果我使用.symfix,部分地我可以从c运行时得到几个调用,但显然不是从我的代码得到的 !sym噪音无。symfix: SYMSRV: \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not foun

尝试在windbg/VS中调试小型转储时,无法获取版本
9.0.30729.8387
msvcr90
的符号。正在尝试执行
.symfix
。如果我为我的应用程序符号设置sympath,我可以得到调用堆栈的一部分,而不是msvcr。如果我使用
.symfix
,部分地我可以从c运行时得到几个调用,但显然不是从我的代码得到的

!sym噪音
。symfix

SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/msvcr90.dll/51EA1BBDa3000/msvcr90.dll not found
DBGHELP: C:\Program Files\Debugging Tools for Windows (x64)\msvcr90.dll - file not found
SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  \\eserver\symstore\ms\msvcr90.dll\51EA1BBDa3000\msvcr90.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/msvcr90.dll/51EA1BBDa3000/msvcr90.dll not found
DBGENG:  C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.dll - Couldn't map image from disk.
Unable to load image C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.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
是运行的第一个好命令。 然后使用

来自

DBGENG:  C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.dll - Couldn't map image from disk.
Unable to load image C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.dll, Win32 error 0n2
DBGENG:  msvcr90.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.

我将制作该文件的另一个副本,并将您的符号路径指向该文件,以查看调试器是否可以从那里加载该文件。

解决了带有附加调试器的客户端操作系统上的复制问题。

开始时,我的符号路径中既有MS symbol server,也有我的本地文件夹。而且它不能正常工作。这就是为什么我必须使用
.symfix
。我没有版本为
9.0.30729.8387的库。如果我有,我不会问我的问题。我不知道windbg为什么提到这个文件。它肯定会有用的。您可以执行
.symfix
然后添加本地符号路径,然后执行
!sym noised
并共享
的完整输出。重新加载;k
什么都没有。这是:。
Couldn't map image from disk.
DBGENG:  C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.dll - Couldn't map image from disk.
Unable to load image C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_08e793bfa83a89b5\msvcr90.dll, Win32 error 0n2
DBGENG:  msvcr90.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.