WinDbg常用命令系列---符号相关命令
ld (Load Symbols)
ld命令加载指定模块的符号并更新所有模块信息。
ld ModuleName [/f FileName]
参数:
- ModuleName
指定要加载其符号的模块的名称。modulename可以包含各种通配符和说明符。 - /f FileName
更改为匹配项选择的名称。默认情况下,模块名是匹配的,但使用/f时,文件名是匹配的,而不是模块名。文件名可以包含各种通配符和说明符。
调试器的默认行为是使用延迟符号加载(也称为延迟符号加载)。这意味着符号在需要之前不会实际加载。 另一方面,ld命令强制加载指定模块的所有符号。
ln (List Nearest Symbols)
ln命令显示给定地址处或附近的符号。
ln Address ln /D Address
参数:
- Address
指定调试器开始搜索符号的地址。将显示最近的符号(地址之前或之后)。 - /D
指定使用调试器标记语言(DML)显示输出。DML输出包含一个链接,您可以使用该链接浏览包含最近符号的模块。它还包括一个链接,可用于设置断点。
可以使用ln命令来帮助确定指针指向什么。当您查看损坏的堆栈以确定哪个过程进行了调用时,此命令也很有用。如果源行信息可用,LN显示还包括源文件名和行号信息。如果使用的是源服务器,则ln命令将显示与源服务器相关的信息。
.copysym (Copy Symbol Files)
.copysym命令将当前符号文件复制到指定目录。
.copysym [/l] Path
参数:
- /l
使每个符号文件在复制时加载。 - Path
指定符号文件应复制到的目录。副本不会覆盖现有文件。
很多时候,符号存储在网络上。符号访问通常很慢,或者您可能需要将调试会话传输到不再具有网络访问权限的另一台计算机。在这种情况下,.copysym命令可用于将会话所需的符号复制到本地目录。
.symfix (Set Symbol Store Path)
.symfix命令自动将符号路径设置为指向Microsoft符号存储。
.symfix[+] [LocalSymbolCache]
参数:
- +
使Microsoft符号存储路径附加到现有符号路径。如果不包括此项,则替换现有符号路径。
- LocalSymbolCache
指定要用作本地符号缓存的目录。如果此目录不存在,则将在符号服务器开始复制文件时创建。如果省略localsymbolcache,则将使用调试器安装目录的sym子目录。
下面的示例演示如何使用.symfix设置指向Microsoft符号存储的新符号路径。
3: kd> .symfix c:\myCache 3: kd> .sympath Symbol search path is: srv* Expanded Symbol search path is: cache*c:\myCache;SRV*http://msdl.microsoft.com/download/symbols
下面的示例演示如何使用.symfix+将现有符号路径附加到指向Microsoft符号存储的路径。
3: kd> .sympath Symbol search path is: c:\someSymbols Expanded Symbol search path is: c:\somesymbols 3: kd> .symfix+ c:\myCache 3: kd> .sympath Symbol search path is: c:\someSymbols;srv* Expanded Symbol search path is: c:\somesymbols;cache*c:\myCache;SRV*http://msdl.microsoft.com/download/symbols
.symopt (Set Symbol Options)
.symopt命令设置或显示符号选项。
.symopt+ Flags .symopt- Flags .symopt
参数:
- +
使标志指定的符号选项被设置。如果.symopt与标志一起使用,但没有加号或减号,则假定为加号。 - -
使由标志指定的符号选项被清除。 - Flags
指定要改变的符号选项。Flags必须是这些符号选项的比特Flags的总和。
不带任何参数,.symopt显示当前符号选项。
.sympath (Set Symbol Path)
.sympath命令设置或更改符号路径。符号路径指定调试器查找符号文件的位置。
.sympath[+] [Path [; ...]]
参数:
- +
指定新位置将附加到(而不是替换)上一个符号搜索路径。 - Path
完全路径或完全路径的列表。多条路径用分号分隔。如果忽略路径,则显示当前符号路径。
当符号路径更改时,将不会加载新的符号信息。您可以使用.reload (Reload Module)命令重新加载符号。
!sym
这个扩展命令控制噪声符号加载和符号提示。
!sym !sym noisy !sym quiet !sym prompts !sym prompts off
参数:
- noisy
激活干扰符号加载。 - quiet
禁用干扰符号加载。 - prompts
允许在Symsrv收到身份验证请求时显示身份验证对话框。 - prompts off
当Symsrv接收到一个认证请求时,删除所有认证对话框。这可能导致SYMSRV无法访问因特网上的符号。
如果!sym符号扩展不带参数,显示噪声符号加载和符号提示的当前状态。这个!sym noisy和!sym quiet符号静音扩展控制噪声符号加载。这个!sym prompts和!sym prompts off控制当symsrv遇到身份验证请求时是否显示身份验证对话框。这些命令必须后跟.reload(重新加载模块)才能生效。身份验证请求可以由代理服务器、Internet防火墙、智能卡读卡器和安全网站发送。
!symsrv
关闭symbol服务器客户端。
!symsrv close
这个!symsrv close扩展将关闭任何活动的symbol服务器客户端。如果需要重新同步连接,这将非常有用。如果您以前拒绝过Internet身份验证请求,则需要使用!symsrv close可重新连接到符号存储。
为虫子生,为虫子死,为虫子奋斗一辈子