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.dll\5265C8EE99d000,注意5265C8EE99d000可能有变化,网上说,有的是:4E1545829a3000
此值可以通过下面步骤看到
4.命令行输入:
!sym noisy
.cordll -ve -u -l
!CLRStack
如果mscordacwks没有加载成功,会看到下面错误,其中红框中的就是对应的路径。

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?“

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
Windbg SOS 加载技巧(.net framwork 2.0)的更多相关文章
- windbg sos加载相关
使用windbg 加载sos.dll时,经常碰到报The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.d ...
- WinDBG中加载SOS和CLR
WinDBG中加载SOS和CLR 最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能 ...
- 未能加载或程序集“XXXX,Version=0.0.0.0,Culter=neutral,PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
问题描述:在VS中运行一个C#程序,出现错误: 未能加载或程序集“XXXX,Version=0.0.0.0,Culter=neutral,PublicKeyToken=null”或它的某一个依赖项.试 ...
- Windows调试学习笔记:(一)WinDBG中加载SOS和CLR
最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定 ...
- windbg在加载模块时下断点
假设我们希望在加载特定的dll时中断调试器,例如,我想启用一些SOS命令,而clr还没有加载,当您遇到程序中过早发生的异常,并且您不能依赖手动尝试在正确的时间中断时,这尤其有用.例如,在将调试器附加到 ...
- 发布我的图片预加载控件YPreLoadImg v1.0
介绍 大家好!很高兴向大家介绍我的图片预加载控件YPreLoadImg.它可以帮助您预加载图片,并且能显示加载的进度,在预加载完成后调用指定的方法. YPreLoadImg控件由一个名为PreLoad ...
- windbg加载符号表
0x00 前言 在使用windbg调试windows中的程序时会经常碰到一些系统的dll里面的一些函数调用,有些函数是没有具体函数名的,这对于调试非常不利,基于此,微软针对windows也发布了很多系 ...
- CLR探索应用程序域世界(上):Windbg SOS剖析揭示域世界
在CLR的世界中,有一系列的令人Amazing的技术和架构.其中,CLR对应用程序在内存中内存分配,执行模型,程序之间的交互等一系列的技术,值得每一个致力于DotNet平台的技术人员深究. 编程人员在 ...
- CLR探索系列:Windbg+SOS动态调试分析托管代码
http://blog.csdn.net/garyye/article/details/4788070 在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...
随机推荐
- Python推荐系统库--Surprise理论
Surprise Surprise是scikit系列中的一个.Surprise的User Guide有详细的解释和说明 支持多种推荐算法 基础算法/baseline algorithms 基于近邻方法 ...
- DDD工作流持久化(十六)
找到对应的sql文件执行sql语句 产生如下的表: 添加引用: 添加命名空间: using System.Activities.DurableInstancing; using System.Runt ...
- 自定义Spring标签
写了好几次了,结果一段时间之后就忘记了自己有写好的example,但是最后还是决定重新写一遍,把这个步骤记录下来 首先看整个项目结构 从transaction.xml开始,虽然图上报错了,实际上运行并 ...
- CND网站加速
CDN是什么 1-CDN俗称网站加速2-公司一般是购买其他cdn服务商提供的服务3-CDN一般是用来缓存网站的静态资源文件的(css,js,图片,html,htm),浏览器获取某个静态资源是按照就近原 ...
- 使用 curses 函数库管理基于文本的屏幕
curses 函数库提供了终端无关的方式来编写全屏幕的基于字符的程序.curses 还可以管理键盘,提供了一种简单易用的非阻塞字符输入模式. curses 函数库能够优化光标的移动并最小化需要对屏幕进 ...
- IIS 无法显示网页 目前访问网站的用户过多
最近把一个服务部署到XP系统的IIS上,供其他程序调用,在访问了几个页面后,会出现“无法显示网页 目前访问网站的用户过多”的提示. 网上找了,果然有解决方法: 1.打开IIS,在网站上右键,选择“属性 ...
- appium---第二个脚本,定位页面元素
工具使用: 1.android-sdk的自带工具---uiautomator工具 2.使用find_element_by_id寻找元素位置 from appium import webdriver; ...
- mybatis提示Invalid bound statement (not found)错误的可能原因
https://www.cnblogs.com/liaojie970/p/8034525.html
- Java BigDecimal详解,提供了丰富的四舍五入规则
java.math.BigDecimal类提供用于算术,刻度操作,舍入,比较,哈希算法和格式转换操作. toString()方法提供BigDecimal的规范表示.它使用户可以完全控制舍入行为. 提供 ...
- DDoS攻击与防御(2)
2.攻击系统资源终端设备在与服务器进行通信时,经常需要创建会话连接,在此过程中通常会使用TCP和SSL等协议.会话连接一旦被占满,新进入的会话请求就必须等待前面的会话完成.消耗系统资源的DDoS攻击的 ...