Debugging Tools for Windows

配置注册表

SymProxy将它的配置保存在注册表中

.

这个注册表键用来控制到什么地方查找站点中保存的符号、日志记录的级别,以及SymProxy是否直接连接到网络。可以通过运行Windows调试工具包中提供的SymProxy注册工具(Symproxy.reg)来创建这个键。在Windows Explorer中双击它,或者在命令提示符运行symproxy.reg都可以。

网页目录

对于IIS中创建来用作符号存储的每个虚拟目录,都必须在下面的注册表键的Web Directories子键下创建一个键。

HKLM/Software/Microsoft/Symbol Server Proxy

设置符号存储虚拟目录的注册表键
  1. 1.在Web Directories键下创建一个和虚拟目录同名的键。
  2. 2.在刚才创建的键下面创建一个名为SymbolPathString ValueExpandable String Value值。
  3. 3.编辑SymbolPath的内容,包含SymProxy符号存储使用到的所有符号存储。如果不止一个,用分号分隔它们。每个键值最多可以包含10个符号存储。HTTP路径必须包含http://前缀,UNC路径必须包含\\前缀。

例如,如果虚拟目录的名字是Symbols,并且它访问到的符号存储位于UNC路径\\symbols\symbols以及HTTP路径http://msdl.microsoft.com/download/symbols,可以创建下面的键。

HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/symbols

创建键之后,将它的SymbolPath键值设置为\\symbols\symbols;http://msdl.microsoft.com/download/symbols。在注册表编辑器中看起来像下面这样:

注册表示例

例中,SymProxy会首先搜索\\symbols\symbols中的符号。如果没有找到,则使用Microsoft符号存储。

也可以通过为 Web Directories键直接创建一个SymbolPath值来定义全局的符号源。但是不建议这样做,因为这会使得调试客户端恶意构造的符号请求可以在网站的根目录创建假的目录和文件。

日志记录

SymProxy可以将它的活动报告给Application Event Viewer。Loglevel中的值用来决定报告的详细程度。这是位于“Symbol Server Proxy”键下的REG_DWORD值。一般来说默认设置为0,但是可以将它改变成下面列出的任意值:

Loglevel Reporting Level
0 quiet
1 error
2 succss
3 info
4 warning
5 debug

如果在将文件移动到符号存储时存在问题,可以调整这些值来知道发生了什么事情。如果将Logleve设置为5,所有活动都可以在事件查看器中看到。将Logleve设置为3可以看到文件的来源以及初始化的过程。

要完成日志配置,必须在应用程序事件查看器(Application Event Viewer)中注册SymProxy。

在应用程序查看器中注册SymProxy
  1. 1.创建注册表键

    HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\SymProxy 

  2. 2.在这个键中,新建一个名为EventMessageFile、类型为Expandable String Value (REG_EXPAND_SZ)的值。
  3. 3.将键值的内容设置为%WINDIR%\system32\inetsrv\symproxy.dll

这样SymProxy就在注册表里面标记为消息源了,开始进行日志记录。

访问外部网络资源

有时可能还需要设置HTTP代理使得服务可以访问外部网络资源。这可以使用ProxyCfg工具(Proxycfg.exe)。在命令行窗口输入proxycfg.exe -?可以查看帮助信息。SymProxy的默认行为是使用任何通过该程序指派的HTTP代理。如果没有配置HTTP代理,SymProxy会使用一个虚假代理,使得可以访问局域网内部的安全HTTP站点。但是有一个副作用,它同时会阻止SymProxy通过外部Internet的直接连接进行工作。要允许SymProxy可以通过Internet直接连接进行操作,需要在Symbol Server Proxy键下面创建一个名为NoInternetProxy的REG_DWORD键值。将它的值设置为1,并且确认没有使用ProxyCfg指定任何HTTP代理。

Build machine: CAPEBUILD