• (转)解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题


    解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题

     

    开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Server 2012,加载sos.dl执行~* e !clrstack,提示如下错误:

    复制代码
    Failed to load data access DLL, 0x80004005
    Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
                2) the file mscordacwks.dll that matches your version of clr.dll is 
                    in the version directory or on the symbol path
                3) or, if you are debugging a dump file, verify that the file 
                    mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
                4) you are debugging on supported cross platform architecture as 
                    the dump file. For example, an ARM dump file must be debugged
                    on an X86 or an ARM machine; an AMD64 dump file must be
                    debugged on an AMD64 machine.
    
    You can also run the debugger command .cordll to control the debugger's
    load of mscordacwks.dll.  .cordll -ve -u -l will do a verbose reload.
    If that succeeds, the SOS command should work on retry.
    
    If you are debugging a minidump, you need to make sure that your executable
    path is pointing to clr.dll as well.
    复制代码

    当前系统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。

    继续执行~* e !clrstack,WinDbg提示如下错误:

    复制代码
    The version of SOS does not match the version of CLR you are debugging.  Please
    load the matching version of SOS for the version of CLR you are debugging.
    CLR Version: 4.0.30319.1
    SOS Version: 4.0.30319.17929
    Failed to load data access DLL, 0x80004005
    Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
                2) the file mscordacwks.dll that matches your version of clr.dll is 
                    in the version directory or on the symbol path
                3) or, if you are debugging a dump file, verify that the file 
                    mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
                4) you are debugging on supported cross platform architecture as 
                    the dump file. For example, an ARM dump file must be debugged
                    on an X86 or an ARM machine; an AMD64 dump file must be
                    debugged on an AMD64 machine.
    
    You can also run the debugger command .cordll to control the debugger's
    load of mscordacwks.dll.  .cordll -ve -u -l will do a verbose reload.
    If that succeeds, the SOS command should work on retry.
    
    If you are debugging a minidump, you need to make sure that your executable
    path is pointing to clr.dll as well.
    复制代码

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

    The version of SOS does not match the version of CLR you are debugging.  Please
    load the matching version of SOS for the version of CLR you are debugging.
    CLR Version: 4.0.30319.1
    SOS Version: 4.0.30319.17929            
  • 相关阅读:
    第五节: EF高级属性(一) 之 本地缓存、立即加载、延迟加载(不含导航属性)
    第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
    第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )
    Android ListView常见配置说明
    如何配置IIS使其支持APK文件的下载
    Android scrollview和GridView混合使用
    WCF配置后支持通过URL进行http方式调用
    转战博客园
    Android Intent参数传递
    Android 使用SQLite
  • 原文地址:https://www.cnblogs.com/059212315/p/10495644.html
Copyright © 2020-2023  润新知