使用 Microsoft Symbol Server 获取调试符号文件

来源:互联网 发布:统计建模与r软件 数据 编辑:程序博客网 时间:2024/05/22 00:00
注意:要查看此视频,您的计算机中必须安装 Windows Media Player 7.0 或更高版本。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
299321 (http://support.microsoft.com/kb/299321/) Windows Media Player 7.1 的说明和可用性
当您使用各种 Microsoft 工具调试应用程序时,必须拥有符号信息。符号文件提供包含在可执行文件和动态链接库 (DLL) 中的函数的占位空间。此外,符号文件还可以表示达到失败点的函数调用路线图。例如,当您转储调试器内的调用堆栈时,必须拥有符号。本文讨论如何通过指定各种调试工具的以下 URL 来使用 Microsoft Symbol Server:
http://msdl.microsoft.com/download/symbols
注意http://msdl.microsoft.com/download/symbols 是不可浏览的,并且仅适用于由调试器访问。
回到顶端 回到顶端

更多信息

使用 Symbol Server 技术

Microsoft Symbol Server 是使用 Debugging Tools for Windows 软件包附带的 SymSrv 技术 (SymSrv.dll) 构建的。SymSrv 会生成本地符号高速缓存,以进行快速、自动的符号解析。

使用 Symbol Server 就像在符号路径中使用相应的语法一样简单。通常,语法的格式如下:
SRV*your local symbol folder*http://msdl.microsoft.com/download/symbols
其中 your local symbol folder 是任何用作符号目标位置的驱动器或共享。

例如,要在 WinDbg 调试器中设置符号路径,请在该调试器的命令窗口中键入以下命令:
.sympath SRV*f:/localsymbols*http://msdl.microsoft.com/download/symbols
要获取最新的 SymSrv 功能,必须安装最新的调试软件包。要获取 Debugging Tools for Windows 软件包的最新版本,请访问以下 Microsoft 网站:
Microsoft 调试工具
http://www.microsoft.com/whdc/devtools/ddk/default.mspx (http://www.microsoft.com/whdc/devtools/ddk/default.mspx)
有关 Symbol Server 技术的更多信息,请参阅随 Debugging Tools for Windows 软件包提供的 Debuggers.chm 帮助文件。
回到顶端 回到顶端

设置 _NT_SYMBOL_PATH 环境变量

如果您在 _NT_SYMBOL_PATH 环境变量中提供了正确的 symsrv 语法,常见的 Microsoft 调试工具就会使用 SymSrv 技术。这些工具会自动包括您在该变量中提供为符号路径的任何内容。

您可以将该变量设置为系统变量或用户环境变量。要从桌面上执行此操作,请右键单击我的电脑,然后单击属性。在高级选项卡上,单击环境变量

您也可以在命令提示符下临时设置该变量。如果采用此方法,通过命令提示符启动的所有应用程序都将继承该设置。例如:
Set _NT_SYMBOL_PATH = symsrv*symsrv.dll*f:/localsymbols*http://msdl.microsoft.com/download/symbols
回到顶端 回到顶端

将 Microsoft Symbol Server 和 WinDbg 一起使用

要在 WinDbg 中使用 Symbol Server 网站,请按照下列步骤操作: 1. 启动 Windows 调试器 (WinDbg.exe)。 2. 在文件菜单上,单击符号文件路径。 3. 在符号路径框中,键入以下命令:
SRV*your local folder for symbols*http://msdl.microsoft.com/download/symbols
其中 your local folder for symbols 是在其中复制本地符号高速缓存的文件夹。调试符号将下载到此位置。

注意:您可以指向计算机能达到的任意本地路径或共享位置;此位置不必是计算机硬盘上的位置。 此外,您也可以在命令提示符下使用 .sympath 命令来设置符号路径。

您可以将 symsrv 语法和其他符号路径组合在一起。例如,使用以下语法来指定两个或更多个符号路径:
f:/BusObjSymbols;SRV*f:/localsymbols*http://msdl.microsoft.com/download/symbols
该语法用分号来分隔符号路径。

当您开始调试故障转储文件或应用程序时,Windows 调试器将检查它加载的模块的符号信息是否位于本地文件夹中。如果模块的符号信息不在本地文件夹中,WinDbg 将尝试从 Symbol Server 下载相应的符号文件或文件。

如果您在具有不同文件版本的计算机上调试应用程序时使用相同的本地高速缓存,则将下载不同版本的符号,并将其同第一批符号存储在一起。SymStore 格式会按照映像的时间戳和大小(或校验和)来存储文件。因此,来自不同产品版本的符号可以并行共存。(SymStore.exe 是 Debugging Tools for Windows 软件包中生成符号服务器的实用程序。有关更多信息,请参阅产品文档。)

由于下载符号文件需要一些时间,因此请记住,当您第一次调试应用程序时,调试器可能看上去停止了响应(挂起)。这是因为必须下载系统 DLL 的大多数符号文件(如 Ntdll.dll、Kernel32.dll 和其他文件)。
回到顶端 回到顶端

使用 SymChk.exe 实用工具下载符号

您可以使用 SymChk.exe 实用工具,验证符号并以便捷、非侵入的方式生成本地符号高速缓存。SymChk.exe 实用程序随 Debugging Tools for Windows 软件包提供。SymChk.exe 是一种命令行工具。您可能需要将 Debugging Tools for Windows 软件包的文件夹添加到系统上的 PATH 环境变量,以便从任意命令提示符下访问该工具。

要使用 SymChk.exe 实用程序下载 Windows/System32 文件夹中所有组件的符号文件,请使用以下命令行命令:
symchk /r c:/windows/system32 /s SRV*c:/symbols/*http://msdl.microsoft.com/download/symbols
在此示例中: • “/r c:/windows/system32”查找 System32 文件夹和所有子文件夹中的所有符号文件。 • “/s SRV*c:*http://msdl.microsoft.com/download/symbols”指定用于符号解析的符号路径。在此例中,“c:/symbols”是将在其中从符号服务器复制符号的本地文件夹。 要获取 SymChk.exe 命令行选项的更多信息,请在命令提示符下键入 symchk /?。其他选项包括指定正在运行的可执行文件的名称或进程 ID (PID) 的功能。