.reload (Reload Module)
.reload
命令删除指定模块的所有符号信息,并且按需要重新加载这些符号。某些情况下,该命令也会重新加载或卸载模块本身。
语法
.reload [Options] [Module [= Address [, Size [, Timestamp] ] ] ]
.reload -?
参数
- Options
- 任意下面的选项:
- /d
- 重新加载调试器模块列表中的所有模块。(省略所有参数时,这是用户模式调试下的默认行为。)
- /f
- 强制调试器立即加载符号。该参数会覆盖延迟符号加载。更多信息,查看下面的注释节。
- /i
- 忽略.pdb文件版本不匹配的情况。(如果没有包含该参数,调试器不会加载不匹配的符号文件。) 使用 /i时,即使没有明确指定,也会使用/f。
- /l
- 列出模块但是不重加载它们的符号。(内核模式下,使用该参数的输出和!drivers
扩展命令一样。)
- /n
- 仅重加载内核符号。该参数不会重加载任何用户模式符号。(只能在内核模式调试时使用该选项。)
- /o
- 强制覆盖符号服务器的下游存储(downstream store)中的缓存文件。使用该标志时,还需要包含/f。默认情况下,下游存储中的文件永远不会被覆盖。
由于符号服务器对每个版本的二进制文件的符号使用不同的名字,除非确认下游存储被破坏了,否则不需要使用该选项。
- /s
- 重新加载系统的模块映像列表中所有模块。(省略所有参数时,在内核模式下这是默认行为。) 如果在用户模式调试时使用名字来单独加载某个系统模块,则必须包含/s。
- /u
- 卸载指定模块和它的所有符号。调试器卸载任何名字匹配Module
的模块,不管它的全路径是什么。映像名也会被搜索。更多信息,查看下面的注释节。
- /unl
- 基于已卸载模块列表中的映像信息重新加载符号。
- /user
- 仅重加载用户模式符号。(只能在内核模式调试时使用该选项。)
- /v
- 打开详细显示。
- /w
- 将Module 当作一个字面上的字符串。这样可以避免调试器展开通配符。
- Module
- 指定主控机要重加载符号的目标机上的映像名。Module 需要包含文件的名字和扩展名。如果没有使用/w
选项,Module 可以包含各种通配符和修饰符。该语法的更多信息,查看字符串通配符语法。如果省略Module,.reload
命令的行为由使用的Options 决定。
- Address
- 指定模块的基地址。一般来说只有在映像头被破坏或者页换出时才需要该地址。
- Size
- 指定模块映像的大小。很多情况下,调试器会知道模块的正确大小。当调试器不知道正确大小时,就需要指定Size。该大小可以是实际的模块大小或者更大的数字,但是不能更小。一般来说,只有在映像头被破坏或者页换出时才需要该大小。
- Timestamp
- 指定模块映像的时间戳。很多情况下,调试器会知道模块的正确时间戳。当调试器不知道正确的时间戳时,就需要指定Timestamp一般来说,只有在映像头被破坏或者页换出时才需要指定。
- -?
- 显示这个命令的简短帮助文本。
环境
模式 |
用户模式、内核模式 |
目标 |
活动目标、崩溃转储 |
平台 |
所有 |
注释
.reload
并不会造成符号信息的读取,而是告诉调试器符号文件可能改变了,或者新的模块被添加到模块列表中。该命令使得调试器修改它的模块列表,并且删除指定模块的符号信息。每个单独的.pdb
中的符号信息直到实际被需要之前都不会被读取。(这种加载称为延迟符号加载。)
可以使用/f 选项或者执行ld (Load Symbols)命令来强制符号加载。
.reload 命令在系统停止响应(即崩溃),使得被调试的目标机的符号信息丢失时很有用。该命令在更新了符号树时也很有用。
如果映像头因为像模块被卸载或者被页换出之类的原因出错了,可以通过使用/unl参数或者同时指定Address 和Size
来正确加载符号。
.reload /u 命令进行更广泛的搜索。调试器首先尝试使用Module
匹配精确的模块名,不管路径是什么。如果找不到匹配项,Module 被当作已加载的映像名。例如,如果HAL在内存中的名字为halacpi.dll,下面两个命令都可以卸载它的符号。
kd> .reload /u halacpi.dll
kd> .reload /u hal
如果在进行用户模式调试,并且希望加载一个不在目标程序模块列表中的模块,必须像下面的例子一样使用/s 选项。
0:000> .reload /u ntdll.dll
Unloaded ntdll.dll
0:000> .reload /s /f ntdll.dll
附加信息
关于延迟符号加载的更多信息,查看延迟符号加载。关于其他符号选项的更多信息,查看设置符号选项。
Build machine: CAPEBUILD