符号服务器和 Internet 防火墙

某些系统使用需要对所有 Internet 流量进行身份验证的 Internet 防火墙或代理服务器。 除非系统使用以透明方式处理身份验证的防火墙客户端,否则早期版本的符号服务器无法访问 Internet 中的符号。

从 Dbghelp 6.1 开始,符号服务器支持需要此类身份验证的代理服务器。 符号服务器使用计算机 LAN 设置中配置为默认值的任何服务器。 若要找到此项,请在控制面板中打开 Internet 选项 项,单击 连接 选项卡,然后单击 LAN 设置。 也可以通过单击 工具 菜单上的 Internet 选项,从 Internet Explorer 执行此作。 符号服务器已在许多品牌的代理服务器上使用基本身份验证和质询响应方法进行测试。

若要定义要使用的符号服务器的特定代理服务器,请将_NT_SYMBOL_PROXY环境变量设置为代理服务器的名称(或 IP 地址),后跟端口号。 用冒号分隔两个值。 例如:

set _NT_SYMBOL_PROXY=myproxyserver:80

使用 windbg 调试器时,请将符号路径配置为指向要使用的符号存储。 一个区别在于,系统将显示一个对话框,在其中需要输入用户 ID 和密码才能传递到代理服务器。 如果输入了不正确的信息,对话框将重新显示。 如果单击“取消 ”按钮,则会关闭该对话框,并且符号服务器将被禁用,以便通过 Internet 使用。

使用最新版本的 cdb.exe 或 ntsd.exe时,此功能默认处于关闭状态。 但是,可以使用 !sym 扩展命令启用或禁用此功能,如下所示:

  • 若要启用用户 ID 和密码提示:!sym 提示
  • 若要关闭用户 ID 和密码提示:!sym 提示关闭

如果启用提示,则需要使用 .reload 命令重新加载符号。

DbgHelp API 已扩展以支持这些更改。 SymbolServerSetOptions 函数支持SSRVOPT_PROXY选项。 如果数据参数 NULL,则使用 Internet 选项 中定义的默认代理。 否则,将传递以零结尾的字符串,指定代理服务器的名称和端口号。 名称和端口由冒号分隔,如下所示:myproxyserver:80。 SymSetOptions 函数支持SYMOPT_NO_PROMPTS选项。 这会关闭符号服务器中所有提示进行验证的提示。