首页 > 代码库 > windbg sos版本不匹配问题解决

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:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscordacwks.dll
CLR DLL status: Loaded DLL C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscordacwks.dll

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

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

0:105> .chain
Extension DLL search Path:
    D:\windbg\WINXP;D:\windbg\winext;D:\windbg\winext\arcade;D:\windbg\pri;D:\windbg;D:\windbg\winext\arcade;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\7-Zip;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\Java\jdk1.6.0_25\bin;D:\Program Files\Java\jdk1.6.0_25\JRE\bin
Extension DLL chain:
    sosex: image 4.5.0.0, API 1.0.0, built Wed Oct 03 22:57:55 2012
        [path: D:\windbg\sosex.dll]
 
   sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 06 14:07:11 2012
        [path: D:\windbg\sos.dll]

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 12 08:02:43 2013
        [path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll]
    dbghelp: image 6.13.0001.776, API 6.1.6, built Sat May 15 04:57:22 2010
        [path: D:\windbg\dbghelp.dll]
    ext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:40 2010
        [path: D:\windbg\winext\ext.dll]
    exts: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:13 2010
        [path: D:\windbg\WINXP\exts.dll]
    uext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:09 2010
        [path: D:\windbg\winext\uext.dll]
    ntsdexts: image 6.1.7752.0, API 1.0.0, built Sat May 15 04:52:37 2010
        [path: D:\windbg\WINXP\ntsdexts.dll]

 

貌似加载了两个sos.dll

0:105> .unload sos
Unloading sos extension DLL
0:105> .chain
Extension DLL search Path:
    D:\windbg\WINXP;D:\windbg\winext;D:\windbg\winext\arcade;D:\windbg\pri;D:\windbg;D:\windbg\winext\arcade;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\7-Zip;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\Java\jdk1.6.0_25\bin;D:\Program Files\Java\jdk1.6.0_25\JRE\bin
Extension DLL chain:
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos: image 4.0.30319.18408, API 1.0.0, built Thu Sep 12 08:02:43 2013
        [path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll]
    dbghelp: image 6.13.0001.776, API 6.1.6, built Sat May 15 04:57:22 2010
        [path: D:\windbg\dbghelp.dll]
    ext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:40 2010
        [path: D:\windbg\winext\ext.dll]
    exts: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:13 2010
        [path: D:\windbg\WINXP\exts.dll]
    uext: image 6.13.0001.776, API 1.0.0, built Sat May 15 04:57:09 2010
        [path: D:\windbg\winext\uext.dll]
    ntsdexts: image 6.1.7752.0, API 1.0.0, built Sat May 15 04:52:37 2010
        [path: D:\windbg\WINXP\ntsdexts.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

windbg sos版本不匹配问题解决