Debugging Tools for Windows |
默认情况下,目标模块加载时并没有实际加载符号信息。符号是在调试器需要使用时才加载的。这称为延迟符号加载(deferred symbol loading 或 lazy symbol loading)。当该选项启用时,调试器在遇到不认识的符号时才会进行符号加载。
当延迟符号加载被禁用时,进程的启动可能变得慢很多,因为所有符号在模块加载时就会被加载起来。
在WinDbg中,对于没有模块前缀的符号,延迟符号加载的特性可以使用Debug菜单的Resolve Unqualified Symbols选项来更改。
通过使用ld (Load Symbols)命令或.reload (Reload Module)命令和/f选项,可以忽略延迟符号加载 。他们强制指定符号被立即加载起来,即使其他符号的加载是延迟的。如果符号路径改变了,符号不会自动重新加载。
默认情况下,延迟符号加载是启用的。在CDB和KD中, -s 命令行选项可以关掉它。在CDB中也可以通过tools.ini文件的LazyLoad选项来关掉。当调试器运行起来之后,可以通过.symopt+0x4或.symopt-0x4命令来打开或关闭。