延迟符号加载

默认情况下,在加载目标模块时不会实际加载符号信息。 相反,调试器会根据需要加载符号。 这称为 延迟符号加载延迟符号加载。 启用此选项后,调试器将在遇到无法识别的符号时加载符号。

更改符号路径时(例如,通过使用 .sympath (set Symbol Path) 命令),将延迟重新加载包含导出符号的所有模块。 如果新路径不再包含用于加载 PDB 符号的原始路径,则具有完整 PDB 符号的模块符号将延迟重新加载。 如果新路径仍然包含 PDB 符号文件的原始路径,则不会延迟重新加载这些符号。

禁用延迟符号加载时,进程启动速度可能会慢得多,因为每当加载模块时,都会读取所有符号。

在 WinDbg 中,可以使用“调试”菜单上的“解析非限定符号”选项修改没有模块前缀的符号的延迟符号加载行为。

可以使用 ld (Load Symbols) 命令或带有 /f 选项的 .reload (Reload Module) 命令来替代延迟的符号加载。 这些强制立即加载指定的符号,尽管其他符号的加载延迟。

默认情况下,将启用延迟的符号加载。 在 CDB 和 KD 中, -s命令行选项 将关闭此选项。 也可以使用 tools.ini文件中的 LazyLoad 变量在 CDB 中将其关闭。 调试器运行后,可以分别使用 .symopt+0x4.symopt-0x4 打开或关闭此选项。