如何设置windbg自动下载所有符号?
Posted
技术标签:
【中文标题】如何设置windbg自动下载所有符号?【英文标题】:how can i set windbg to automatically download all the symbols? 【发布时间】:2014-06-23 12:12:21 【问题描述】:一般来说是编程和调试的新手。
我花了很多时间离线(没有互联网),并且正在阅读 Inside Windows Debugging 一书,但有时我发现自己需要一个 pdb 文件。
我做了一些挖掘,找到了这个 URL:http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx,但是版本太多了,我花了一些时间试图弄清楚如何找到合适的版本。
我确实找到了正确的版本,我确实下载了它,但没有运气(我花了 6 个多小时才下载 200 Mb),但我发现自己处于圈子的开头(pdb 不是正确的,即使构建是匹配的),我需要活跃的互联网才能继续阅读我的书,而在国家政策期间我无法获得。
我的问题很简单,我怎样才能让 windbg 一次下载所有二进制文件的所有符号。
操作系统信息: 版本:Windows 7 终极版(x86) 构建:7601.win7sp1_gdr.130104-1431
感谢您耐心阅读我糟糕的英语:)
【问题讨论】:
【参考方案1】:我想你正在寻找文章Building a Debugging Environment
基本上,它会为您当前安装的所有文件下载符号。两个月前,我为安装 Windows 7 进行了此操作,它运行良好 - 但需要 8.3 GB 的磁盘空间,当然下载时间也很长。
概念是遍历Windows目录中的所有DLL和EXE,将文件添加到本地符号存储,然后在线检查符号。
SET PATH=%PATH%;"C:\Program Files\Debugging Tools for Windows"
REM Copy all .DLL files
SYMSTORE add /r /f C:\Windows\*.dll /s C:\SymbolStore\OSSymbols /t "Microsoft Windows" /v ""
REM Download symbols for .DLL files
SYMCHK /r C:\Windows\*.dll /s SRV*C:\SymbolStore\OSSymbols*http://msdl.microsoft.com/download/symbols
REM Copy all .EXE files
SYMSTORE add /r /f C:\Windows\*.exe /s C:\SymbolStore\OSSymbols /t "Microsoft Windows" /v ""
REM Download symbols for .EXE files
SYMCHK /r C:\Windows\*.exe /s SRV*C:\SymbolStore\OSSymbols*http://msdn.microsoft.com/download/symbols
当脚本中断时,您可以再次运行它。 DLL 和 EXE 使用散列存储。如果文件未更改,则哈希不应更改。 Symstore 足够聪明,可以根据文档只拾取丢失的文件:“SymChk 总是在查询符号服务器之前搜索下游存储。
【讨论】:
是的,正是托马斯,这就是我所追求的。我要测试你的脚本,让你更新结果,tnx :)【参考方案2】:当您附加到要调试的应用程序或打开 .dmp 文件时,键入
.reload /f
这应该强制加载二进制文件的所有符号。
确保您之前已正确配置符号服务器。
【讨论】:
thanx tehlexx 的回复,但这不是我需要的..,我需要的是下载所有 pdb,对于 Windows 系统的所有二进制文件,而不是当前正在调试的应用程序,理论上我可以编写一个在 system32 中加载所有 dll 的应用程序,然后对其进行调试,这应该会欺骗 windbg 下载符号,但说真的,我必须这样做吗?以上是关于如何设置windbg自动下载所有符号?的主要内容,如果未能解决你的问题,请参考以下文章