.reload(重新加载模块)

.reload 命令删除指定模块的所有符号信息,并根据需要重新加载这些符号。 在某些情况下,此命令还会重新加载或卸载模块本身。

.reload [Options] [Module[=Address[,Size[,Timestamp]]]] 
.reload -?

参数

Options 以下任一选项:

/d
在调试器的模块列表中重新加载所有模块。 (如果省略所有参数,则这种情况是用户模式调试期间的默认情况。)

/f
强制调试器立即加载符号。 此参数替代 lazy symbol loading。 有关更多信息,请参见下面的“备注”部分。

/i
忽略 .pdb 文件版本中的不匹配情况。 (如果未包含此参数,调试器不会加载不匹配的符号文件。)使用 /i 时,也会使用 /f,即使未显式指定它。

/l
列出模块,但不重新加载其符号。 (在内核模式下,此参数提供的输出类似于 lm 命令。)

/n
仅重新加载内核符号。 此参数不会重新加载任何用户符号。 (只能在内核模式调试期间使用此选项。)

/o
强制覆盖符号服务器的下游存储中的缓存文件。 使用此标志时,还应包含 /f。 默认情况下,永远不会覆盖下游存储文件。

由于符号服务器为二进制文件的每个不同版本的符号使用不同的文件名,所以除非你认为下游存储已损坏,否则不必使用此选项。

/s
重新加载系统的模块映像列表中的所有模块。 (如果省略所有参数,则这种情况是内核模式调试期间的默认情况。)

如果在执行用户模式调试时按名称加载单个系统模块,则必须包含 /s

/u
卸载指定的模块及其所有符号。 调试器卸载任何名称与 Module 匹配的已加载模块,而不考虑完整路径。 还会搜索映像名称。 有关更多信息,请参阅以下“备注”部分中的注释。

/unl
根据已卸载模块列表中的映像信息重新加载符号。

/user
仅重新加载用户符号。 (只能在内核模式调试期间使用此选项。)

/v
打开详细模式。

/w
Module 视为文本字符串。 这种处理方式可防止调试器扩展通配符。

模块
指定目标系统上要为其重新加载主机符号的映像的名称。 Module 应包含文件的名称和文件扩展名。 除非使用 /w 选项,否则 Module 可能包含各种通配符和说明符。 有关语法的详细信息,请参阅字符串通配符语法。 如果省略 Module.reload 命令的行为取决于所使用的 Options

Address
指定模块的基址。 通常,只有当映像标头已损坏或被换出时,才必须具有此地址。

大小
指定模块映像的大小。 在许多情况下,调试器知道模块的正确大小。 当调试器不知道正确的大小时,应指定 Size。 此大小可以是实际的模块大小,也可以是更大的数字,但不应该是更小的数字。 通常,只有当映像标头已损坏或被换出时,才必须具有此大小。

Timestamp
指定模块映像的时间戳。 在许多情况下,调试器知道模块的正确时间戳。 当调试器不知道时间戳时,应指定 Timestamp。 通常,只有当映像标头已损坏或被换出时,才必须具有此时间戳。

注意AddressSizeTimestamp 参数之间不能有空格。

-?
显示此命令的简短帮助文本。

环境

说明
模式 用户模式、内核模式
目标 实时、崩溃转储
平台 全部

其他信息

有关延期(延迟)符号加载的详细信息,请参阅延迟符号加载。 有关其他符号选项的详细信息,请参阅设置符号选项

注解

.reload 命令不会触发读取符号信息。 相反,此命令使调试器知道符号文件可能已更改,或者应该将新模块添加到模块列表中。 此命令使调试器修改其模块列表,并删除指定模块的符号信息。 实际的符号信息直到需要时才从单个 .pdb 文件中读取。 (此类加载称为延迟符号加载延期符号加载。)

可以使用 /f 选项或发出 ld(加载符号)命令强制执行符号加载。

如果系统停止响应(即崩溃),这可能会导致丢失正在调试的目标计算机的符号,此时 .reload 命令可以发挥大作用。 如果已经更新了符号树,则该命令也很有用。

如果映像标头由于某种原因(例如,正在卸载模块或换出)不正确,则可以使用 /unl 参数正确加载符号,或者同时指定 AddressSize

.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