zoukankan      html  css  js  c++  java
  • 符号延迟加载

    当我们在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命令来打开或关闭。

  • 相关阅读:
    一篇文章高效定位iframe
    URL与视图函数的映射
    include标签—引用文件路径
    UnitTest单元测试框架解析【实用篇】
    【案例演练】测试器与模板继承
    2招带你快速获取响应头与发送头
    dede网站如何更新地图sitemap.html
    申请微信小程序流程步骤
    phpstudy本地配置--dede织梦网
    stylus样式开发的使用----vue
  • 原文地址:https://www.cnblogs.com/yilang/p/12971166.html
Copyright © 2011-2022 走看看