Aja*_*jay 6 debugging debug-symbols symbol-server visual-c++ pdb-files
我有Windows 7 x64 SP1.我从以下网址下载了符号:
http://msdn.microsoft.com/en-us/windows/hardware/gg463028
我已经为Windows 7 x64 SP1下载并安装了x64 RTM和x64 SP1符号.安装在T:\Symbols文件夹上.
但是当我调试64位本机C++应用程序时,符号根本不会加载.例如ntdll.dll,PDB位于:
T:\Symbols\ntdll.pdb\6192BFDB9F04442995FFCB0BE95172E12T:\Symbols\ntdll.pdb\CFF40300FD804691B73E12CF2A150EE02但Visual Studio(2008/2010)不会加载符号.在调试时,我从模块视图中选择ntdll.dll并说明Load Symbols From -> Symbol Path,指定ntdll.pdb.对于这两个提到的路径,它总会说:
在此文件夹中找不到匹配的符号文件.
我还添加了这个文件夹(T:\Symbols)Debugging -> Options,但它仍然不会加载符号.在调试时,Load All Symbols按钮将被启用,点击也不会加载符号!
对于32位,PDB文件名将wntdll.pdb用于ntdll.dll并将以上述方式存储在GUID命名的文件夹中.但VS也不会为32位调试加载符号.
非常有趣(令人沮丧),当我选择时Load Symbols From -> Microsoft Symbols Server,它将完美地下载和加载符号.它将在以下位置下载符号(完整路径ntdll):

\Users\...\AppData\Local\Temp\SymbolCache\ntdll.pdb\6192BFDB9F04442995FFCB0BE95172E12
在这里,您可以看到GUID与T:\Symbols路径中的GUID命名文件夹匹配,但对于手动安装的符号,VS严格禁止加载!
对于NTDLL.PDB,尽管相应的文件夹相同,并且PDB的大小也相同,但时间戳可能不同.
有时VS也会在下面放置符号:
C:\...\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols
如果VS只能从Microsoft Symbols Server下载正确的符号,那么使用本地下载的符号是什么?
我的问题基本上是如何加载本地下载和安装的符号?
Alo*_*aus 11
RTM或SP1符号的下载链接几乎没用.每个补丁日后,您将获得更改的ntdll.dll或其他中央OS库.这将使您的"旧"pdbs无用.因此,您需要从符号服务器下载它们,以确保您是最新的.
但是,由于并非所有dll都已更改,因此您应将Symbol服务器下载缓存设置为已解压缩下载符号的相同位置.
去:
工具 - 选项 - 调试 - 符号
并在此目录中设置Cache符号的路径.
加载所有符号意味着您为当前进程中加载的所有模块加载所有符号.但它不会下载Windows使用的所有dll的所有符号.如果你下载Windbg,你会得到一个名为symchk.exe的工具,它允许你递归地下载所有二进制文件的符号.
| 归档时间: |
|
| 查看次数: |
44705 次 |
| 最近记录: |