码迷,mamicode.com
首页 > 其他好文 > 详细

符号延迟加载

时间:2020-05-29 09:48:21      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:前缀   信息   def   nbsp   info   symbols   模块名   图片   更改   

当我们在windbg里执行lm指令后,回见到如下情况:

技术图片

 

有的模块名后面跟的时pdb symbols,表示已加载符号,且后面还跟着符号的详细路径。有的模块后面跟着的是deferred,表示模块已经加载,但是调试器还没有尝试加载它的符号。符号将在需要的时候被加载。那么什么是延迟加载?

符号延迟加载

默认情况下,目标模块加载时并没有实际加载符号信息。符号是在调试器需要使用时才加载的。这称为延迟符号加载(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命令来打开或关闭。

符号延迟加载

标签:前缀   信息   def   nbsp   info   symbols   模块名   图片   更改   

原文地址:https://www.cnblogs.com/yilang/p/12971166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!