我为我的可执行文件App.exe
收集了一个转储文件:App.DMP
不幸的是,我们没有为这个特定的版本保存.pdb
,但是由于我们有版本号,我们可以重建相同的版本并重建.pdb
这没有帮助,我无法加载符号与Visual Studio
。
因此,我尝试使用WinDbg
打开转储,并强制加载应该匹配的符号,如下所示:
0:000> !sym –noisy
0:000> .reload /f /i C:\Tests\dump-e\App.exe
SYMSRV: BYINDEX: 0x34
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV: RESULT: 0x80070003
SYMSRV: BYINDEX: 0x35
https://msdl.microsoft.com/download/symbols
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV: UNC: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV: HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pdb
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/App.pd_
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: HTTPGET: /download/symbols/App.pdb/CEE75F0AAD5348458938777BBD4165B01/file.ptr
SYMSRV: HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
SYMSRV: RESULT: 0x80190194
SYMSRV: BYINDEX: 0x36
c:\tests\dump
App.pdb
CEE75F0AAD5348458938777BBD4165B01
SYMSRV: UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pdb - path not found
SYMSRV: UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\App.pd_ - path not found
SYMSRV: UNC: c:\tests\dump\App.pdb\CEE75F0AAD5348458938777BBD4165B01\file.ptr - path not found
SYMSRV: RESULT: 0x80070003
DBGHELP: Failed copying the file 'D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb' to the cache
DBGHELP: D:\Agt\Def\04\_w\36\s\App\x64\Release\App.pdb - file not found
*** WARNING: Unable to verify checksum for App.exe
*** ERROR: Module load completed but symbols could not be loaded for App.exe
DBGHELP: App - no symbols loaded
为什么强制加载不起作用?D:
驱动器是什么?我没有这样的驱动器..是否与此GUID(CEE75F0AAD5348458938777BBD4165B01)不匹配我的转储有关?强制加载不应该覆盖这个吗?
1条答案
按热度按时间k5ifujac1#
符号和图像文件都有编译时校验和,因此重新构建同一个版本不会产生“兼容的”PDB来调试系统。
使用具有新的重建图像的力可以产生足够相似的构建,以诊断崩溃工作。但是诸如全程序优化、增量链接和简档引导优化之类的优化可能会产生符号的边际差异。
使用
.symopt
SYMOPT_LOAD_ANYTHING并将新构建的pdb和二进制文件放在搜索路径的开头。windgb检查的位置是a)链接输出目录,b)符号路径上的路径。
这意味着当你构建一个二进制文件并在同一台机器上调试它时,它通常会找到正确的值。是生成服务器的生成目录。