延迟符号加载
默认情况下,加载目标模块时不会实际加载符号信息。 相反,调试器会根据需要加载符号。 这称为 延迟符号加载 或 延迟符号加载。 启用此选项后,每当遇到无法识别的符号时,调试器将加载符号。
更改符号路径时,例如使用 .sympath(设置符号路径) 命令,所有加载的带导出符号的模块都会延迟重新加载。 如果新路径不再包含用于加载 PDB 符号的原始路径,则具有完整 PDB 符号的模块符号将延迟重新加载。 如果新路径仍然包含 PDB 符号文件的原始路径,则不会延迟重新加载这些符号。
禁用延迟符号加载时,进程启动速度可能会慢得多,因为每当加载模块时都会读取所有符号。
在 WinDbg 中,可以使用“调试”菜单上的“解析未限定符号”选项,为没有模块前缀的符号修改延迟符号加载行为。
可以使用 ld (加载符号) 命令或 .reload (重载模块) 命令和 /f 选项替代延迟的符号加载。 这些强制立即加载指定的符号,尽管会延迟加载其他符号。
默认情况下,已启用延迟符号加载。 在 CDB 和 KD 中 ,-s 命令行选项 将关闭此选项。 也可以使用 tools.ini 文件中的 LazyLoad 变量在 CDB 中将其关闭。 调试器运行后,可以使用 .symopt+0x4 或 .symopt-0x4 分别打开或关闭此选项。