zoukankan      html  css  js  c++  java
  • windbg sos版本不匹配问题解决

    dumpheap 时提示:

    0:105> !dumpheap -stat
    The garbage collector data structures are not in a valid state for traversal.
    It is either in the "plan phase," where objects are being moved around, or
    we are at the initialization or shutdown of the gc heap. Commands related to
    displaying, finding or traversing objects as well as gc heap segments may not
    work properly. !dumpheap and !verifyheap may incorrectly complain of heap
    consistency errors.
    Error requesting GC Heap data
    Unable to build snapshot of the garbage collector state

    这种情况大部分是由于sos版本不匹配导致:

    0:105> .cordll –ve –u –l

    CLRDLL: Loaded DLL C:WindowsMicrosoft.NETFramework64v4.0.30319mscordacwks.dll
    CLR DLL status: Loaded DLL C:WindowsMicrosoft.NETFramework64v4.0.30319mscordacwks.dll

    .cordll –ve –u –l (小写的L ) 这个命令是控制调试和控制CLR的命令,-ve是显示详细信息,-u 卸载模块,-l (小写的L) 是加载模块,上面这个命令就是卸载CLR 调试模块,然后再加载CLR调试模块,并显示详细信息

    貌似已经加载正确,此时,重新运行dumpheap,错误仍然存在。

    当前系统mscordacwks.dll版本和dump来源系统版本不同,将来源系统对应版本的mscordacwks.dll复制到对应的搜索目录(Symbol File Path、Source File Path和Image File Path都可以),并重新加载。这个时候你会发现在Symbol File Path已经下载了对应的mscordacwks.dll运行时版本,比如:mscordacwks_AMD64_AMD64_4.0.30319.01.dll4BA21EEB965000mscordacwks_AMD64_AMD64_4.0.30319.01.dll。

    调试机器和来源机器SOS.dll、clr.dll版本不一致,将来源机器的两个文件复制到一个指定目录。用.load命令加载这个版本的sos,再次执行~* e !clrstack,运行成功。之后执行sos的任何命令WinDbg都会提示如下信息(暂时忽略它):

    http://www.cnblogs.com/junchu25/archive/2012/09/04/2670540.html

    0:105> .chain
    Extension DLL search Path:
        D:windbgWINXP;D:windbgwinext;D:windbgwinextarcade;D:windbgpri;D:windbg;D:windbgwinextarcade;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:Program Files7-Zip;D:Program Files (x86)Microsoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100DTSBinn;D:Program Files (x86)Microsoft SQL Server100ToolsBinnVSShellCommon7IDE;D:Program Files (x86)Microsoft SQL Server100DTSBinn;C:WindowsSystem32WindowsPowerShellv1.0;D:Program FilesJavajdk1.6.0_25in;D:Program FilesJavajdk1.6.0_25JREin
    Extension DLL chain:
        sosex: image 4.5.0.0, API 1.0.0, built Wed Oct 03 22:57:55 2012
            [path: D:windbgsosex.dll]
     
       sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 06 14:07:11 2012
            [path: D:windbgsos.dll]

        C:WindowsMicrosoft.NETFramework64v4.0.30319sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 12 08:02:43 2013
            [path: C:WindowsMicrosoft.NETFramework64v4.0.30319sos.dll]
        dbghelp: image 6.13.0001.776, API 6.1.6, built Sat May 15 04:57:22 2010
            [path: D:windbgdbghelp.dll]
        ext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:40 2010
            [path: D:windbgwinextext.dll]
        exts: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:13 2010
            [path: D:windbgWINXPexts.dll]
        uext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:09 2010
            [path: D:windbgwinextuext.dll]
        ntsdexts: image 6.1.7752.0, API 1.0.0, built Sat May 15 04:52:37 2010
            [path: D:windbgWINXP tsdexts.dll]

    貌似加载了两个sos.dll

    0:105> .unload sos
    Unloading sos extension DLL
    0:105> .chain
    Extension DLL search Path:
        D:windbgWINXP;D:windbgwinext;D:windbgwinextarcade;D:windbgpri;D:windbg;D:windbgwinextarcade;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:Program Files7-Zip;D:Program Files (x86)Microsoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100DTSBinn;D:Program Files (x86)Microsoft SQL Server100ToolsBinnVSShellCommon7IDE;D:Program Files (x86)Microsoft SQL Server100DTSBinn;C:WindowsSystem32WindowsPowerShellv1.0;D:Program FilesJavajdk1.6.0_25in;D:Program FilesJavajdk1.6.0_25JREin
    Extension DLL chain:
        C:WindowsMicrosoft.NETFramework64v4.0.30319sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 12 08:02:43 2013
            [path: C:WindowsMicrosoft.NETFramework64v4.0.30319sos.dll]
        dbghelp: image 6.13.0001.776, API 6.1.6, built Sat May 15 04:57:22 2010
            [path: D:windbgdbghelp.dll]
        ext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:40 2010
            [path: D:windbgwinextext.dll]
        exts: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:13 2010
            [path: D:windbgWINXPexts.dll]
        uext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:09 2010
            [path: D:windbgwinextuext.dll]
        ntsdexts: image 6.1.7752.0, API 1.0.0, built Sat May 15 04:52:37 2010
            [path: D:windbgWINXP tsdexts.dll]


    此时,只有一个sos了,在运行dumpheap试试:

    0:105> !dumpheap -stat
    Statistics:
                  MT    Count    TotalSize Class Name
    000007fef29fd978        1           24 System.Xml.Linq.XHashtable`1[[System.WeakReference, mscorlib]]
    000007fef29fd880        1           24 System.Xml.Linq.XHashtable`1[[System.Xml.Linq.XName, System.Xml.Linq]]

    推荐隔椅同事的文章,列举了各种可能:

    http://www.cnblogs.com/softfair/p/The_version_SOS_not_match_version_of_CLR_PDB_symbol_for_clr_dll_not_loaded.html

    SRV*c:mysymbol* http://msdl.microsoft.com/download/symbols

  • 相关阅读:
    JavaScript数组去重(12种方法,史上最全转载)
    数组从大到小排序的两种方式
    jquery.inArray()和splice()使用小记
    HbuilderX 线上打包Android9.0版本无法更新
    常见的移动端H5页面开发遇到的坑和解决办法
    监听点击物理返回键及mui.fire父子页面传参
    深入理解DOM事件类型系列第三篇——变动事件
    jquery监听div等元素的内容变化
    寒假进度3
    寒假进度2
  • 原文地址:https://www.cnblogs.com/thaughtZhao/p/4184670.html
Copyright © 2011-2022 走看看