zoukankan      html  css  js  c++  java
  • Windbg SOS 加载技巧(.net framwork 2.0)

    1.打开windbg,加载dump。使用命令确定dump的clr版本:lm vm mscorwks 或者lm vm clr(!eeversion可以查看加载后的sos版本)

    2.找到对应的mscorwks.dll文件,命名为:mscordacwks_AMD64_AMD64_2.0.50727.5477.dll

    mscordacwks_X86_X86_2.0.50727.5477.dll

    3.把上面的文件放到符号目录:mscordacwks_AMD64_AMD64_2.0.50727.5477.dll5265C8EE99d000,注意5265C8EE99d000可能有变化,网上说,有的是:4E1545829a3000

    此值可以通过下面步骤看到

    4.命令行输入:

    !sym noisy

    .cordll -ve -u -l

    !CLRStack

    如果mscordacwks没有加载成功,会看到下面错误,其中红框中的就是对应的路径。

    clip_image001

    5.加载后,可以通过!eeversion查看版本。

    如果上述步骤还有问题,请参考下面6步,确保 windbg 成功调试 .net:

    1、windbg 的版本一致。

       分析时、dump内存时的 windbg 版本一致,且保证是完整的内存文件。使用 .dump /ma c:dump.dmp 执行

    2、检查 CLR的版本要一致。

       检查 mscorwks.dll (#2.0) 或 clr.dll (#4.0) 版本正确。使用 lm vm mscorwks 或 lm vm clr 检查,看输出内容中是否有 # M C 之类的,存在则表示文件不匹配。

    .cordll -ve -u -l :clr版本

    3、加载了正确的扩展命令。

       检查加载的扩展是否为: psscor2.dll (#2.0) psscor4.dll (#4.0) 。使用命令 !threads 检查扩展是否正常工作。

    psscor2 下载地址: http://www.microsoft.com/download/en/details.aspx?id=1073

    psscor4 下载地址: http://www.microsoft.com/download/en/details.aspx?id=21255

    4、如果步骤3 执行失败,则检查 和CLR版本相同的DAC(Data Access Component)是否正确。

       将dump机器上(或其他机器上同版本的 mscordacwks.dll)拷贝到windbg.exe 同目录,并命名为:mscordacwks_xPP_xPP_2.0.50727.vvvv.dll,

       关于此问题的说明见: “Failed to load data access DLL, 0×80004005” – OR – What is mscordacwks.dll?

    clip_image001[5]

    5、确认 CLR  版本。

       使用 lm vm mscorwks (#2.0) 或 lm vm clr (#4.0) 来确认 CLR 版本。

    CLR 2.0 版本历史:     http://blogs.msdn.com/b/dougste/archive/2007/09/06/version-history-of-the-clr-2-0.aspx

    CLR 4.0 版本历史:     http://blogs.msdn.com/b/dougste/archive/2011/09/30/version-history-of-the-clr-4-0.aspx

    6、顺带说一个非常强大的调试托管代码的扩展命令。

    SOSEX     : http://www.stevestechspot.com/

    ========================================================================

    总结:

    1、上述 6步 是”确保windb成功调试.net“的前提,每一步都非常重要。切记,切记!

    2、关于CLR的版本列表,外国大牛就是总结的好,方便查找,应该为.net调试常备之利器。

    3、除了 sos.dll 进行托管调试外,还有2款瑞士军刀可用: psscor2 / sosex

  • 相关阅读:
    python3 内置函数
    python3 模块和包
    python3 面向对象编程
    vue.js的devtools安装
    数组对象排序
    插件资源库
    Vue.js 2.0生命周期
    vue学习--自定义全局vue组件
    搭建VUE项目
    入职新公司
  • 原文地址:https://www.cnblogs.com/vveiliang/p/6678417.html
Copyright © 2011-2022 走看看