WinDbg安装入坑3(C#)

112 篇文章 7 订阅
订阅专栏

由于作者水平有限,如有写得不对的地方,请指正。

使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如:

1   32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题,还得要求用32位的任务管理器导出Dump文件,32位的任务管理器的路径如下:C:\Windows\SysWOW64\taskmgr.exe

2   64位应用程序导出的Dump文件要用64位的WinDbg打开

3  没指定位数的程序(如AnyCPU)导出的文件要用64位的WinDbg打开
 

本文目的:

使用C#编写一段程序,并用64位的任务管理器导出为32位的Dump文件,试一下WinDbg Preview和老版的WinDbg在使用过程中的坑

本文测试环境:

.net framework 3.5 

vistual studio 2017

win10 64位操作系统

步骤如下:

1   新增C# .net framework 控制台程序,选择.net framework 3.5 ,项目名称为:WindbgDemo,并编写代码如下:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
 
namespace WindbgDemo
{
    class Program
    {
        private static string _csdnUrl = "https://www.csdn.net/";
        public static string BaiDuUrl = "https://www.baidu.com/";
        static void Main(string[] args)
        {
          
            ThreadPool.QueueUserWorkItem((a) => {
                new DownLoadBp().DownLoadOperation(BaiDuUrl);
            });
            //堵塞主线程
            string readRet=Console.ReadLine();
            Console.WriteLine("主线程读取到的结果:" + readRet);
            Console.ReadKey(true);
        }
    }
    public class DownLoadBp
    {
        public void DownLoadOperation(string url)
        {
            Console.WriteLine("子线程:url地址:"+url);
            string readRet = Console.ReadLine();
            //堵塞子线程
            Console.ReadKey(true);
            Console.WriteLine("子线程读取到的结果:" + readRet);
        }
        
    }
}

2  生成程序,先打开任务管理器(由于是win10的64位操作系统,所以默认打开的是64位的任务管理器),再打开应用程序,Dump出转储文件,如下图:

2.1   使用WinDbg Preview打开Dump文件

既然是32位应用程序导出的dump文件,那么我们这次目标框架为x86

输入:

.load sos
!threads

后会报No export threads found的错误,那么我们试试手工导入sos版本

输入

 .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll

!threads 

后会报如下的错误
SOS does not support the current target architecture.

如下图:

那么最后试试2.0版本的sos.dll

.load C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll
!threads

见鬼,一样报SOS does not support the current target architecture.这样的错误

关掉WinDbg Preview后再以x86的方式打开Dump文件,这次先输入:

.load C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll

再次输入!threads,就报如下的错误:

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 mscorwks.dll is 
                in the version directory
            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 the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                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 mscorwks.dll as well.

又是提示版本不一致了,看着有戏,看看是不是64位的任务管理器导出的原因

输入命令:!wow64exts.sw   可以看到切换成功了,如下图:

Switched to Guest (WoW) mode
*** WARNING: Unable to verify checksum for mscorlib.ni.dll

接着输入!threads,可以看到输出线程信息了,如下图:

 接着试试堆栈信息命令好不好使,可以看到命令好使了

2.2  使用老版32位的WinDbg测试

 输入:.load C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll

后再次输入:!threads,输出报错如下:

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 mscorwks.dll is 
                in the version directory
            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 the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                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 mscorwks.dll as well.

又是版本不对,试试切换到32位模式

输入:!wow64exts.sw 后可以看到切换成功了(如果这一步报错:可以把soswow64.dll这个dll放到WinDbg运行的根目录下,后面步骤有下载地址),再次输入!threads,可以看到线程信息了,如下图:

 

试试切换线程及线程堆栈信息

~~[4d24]s
 !clrstack

很不幸,当要查看堆栈时,发现报如下的错误:

OS Thread Id: 0x4d24 (5)
Failed to start stack walk: 80070057
 

网上有博主说可以用命令

!dumpstack -ee进行替换,试了一下,确实可以

 

但不是我想要的,由于是使用64位的任务管理器导出的32位的dump文件,这时需要下载soswow64.dll这个dll放到WinDbg运行的根目录下,如下图:

  这个soswow64.dll可以从WinDbg相关.rar · 张祥裕/分享的资源名称 - Gitee.com这里下载,找到里面的压缩包soswow64.zip

接着输入

 .load soswow64命令

 可以看到导入成功,接着再来看堆栈信息,可以看到成功了

好了,本文到此结束。 

 

 

 


 

 

windbg 使用
代号9527
07-27 1792
使用WinDbg内核调试看雪学院,笨笨雄译安装程序基础挑选技术取得更多信息WINDOWS调试工具很强大,但是学习使用它们并不容易。特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器)。本教程的目标是给予一个已经有其他调试工具使用经验的开发者足够信息,使其能通过参考WINDOWS调试工具的帮助文件进行内核调试。本文将假定开发者熟悉一般WINDOWS操作系统和进
winDbg 安装
码农的专栏
06-26 936
一、应用商店搜索WinDbg Preview。
服务器oracle进程满,分析案例:应用服务器W3WP进程CPU持续超过百分之九十(Oracle客户端Bug)...
weixin_30752995的博客
04-03 248
问题描述:项目反馈应用负载的其中一台服务器业务操作的响应非常慢,登录该服务器发现W3WP进程CPU持续超过90%,哪怕在业务低峰期也是如此?远程查看后发现该应用服务器承载的请求确实很低,why???原因分析:抓取w3wp进程的dump发现,正在运行的线程都没有我们系统的堆栈代码。并且长时间运行的工作线程的栈顶基本都是Oracle.DataAccess.Client.OracleTuningAgen...
windbg的时间旅行实现对 C# 程序的终极调试
萌兔兔MMQ!!
05-13 408
一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样就可以对 vlog 快进或者倒退,还可以分享给别人做进一步的分析,是不是想都不敢想。 很开心的是 windbg preview 版本中已经实现了,叫做 时间旅行调试 TTD,相比传统的 静态分析 不知道好多少倍。 为了能提起大家兴趣,我就举二个例子吧。 二:二个有趣的例子 查看程序都触发了第几代垃圾回收 为了方便说明,我就用诱导GC手工触发,然后再观察都触发了哪一代的 GC ,参考代码如下: static void Main(string
Windows7 x86环境下配置windbg的注意点
weixin_42539095的博客
12-17 288
以前一直在64位环境下使用windbg,在x86下配置时遇到一些坑,这里做个总结: 1.环境变量的配置 在用户变量的位置配置 名称:_NT_SYMBOL_PATH 值SRVc:\mysymbol http://msdl.microsoft.com/download/symbols c盘下新建mysymbol目录就行,同时在windbg界面对应的位置填上这个值 2.下载不了符号 官网已经很久ping不通了,需要开全局代理(IE浏览器相关配置处) 浏览器——工具——Internet选项——连接——局域网设置—
windbg 安装文件.rar
05-28
windbg 安装文件.rar
windbg调试工具安装和使用说明.doc
02-28
WinDbg是微软发布的一款源码级(source-level)调试工具,可以用于Kernel内核模式调试和用户模式调试,还可以调试Dump文件。...本文档主要介绍了WinDbg工具的安装和配置方法,以及WinDbg常用命令和使用说明。
windbg.exe用于下载安装
07-22
windbg.exe用于下载安装
VM+WinDbg安装
08-28
A、安装VM虚拟机 B、在VM里安装操作系统 C、安装windbg D、windbg和VM的相关配置 E、启用windbg双机调试
最新版WinDbg离线安装
最新发布
11-07
最新版WinDbg离线安装
windbg安装包及使用教程
12-08
windbg安装包及使用教程 可用于开发调试 windbg安装包及使用教程 可用于开发调试
如何使用windbg查看C#某个线程的栈大小 ?
biyusr的专栏
08-02 373
每一个线程都有一个叫的线程环境块数据结构,这个结构中有一个叫做NT_TIB的结构,它里面有两个字段分别为StackBase和StackLimit,前面叫做,也就是栈顶,后者叫做,因为栈空间是向小地址增长的,所以用就能算出所谓的栈内存大小,接下来我们用windbg演示一下。......
pykd执行出错??windbg和pykd正确安装过程
dapeng1994的博客
10-15 1307
windbg和pykd安装过程windbgpykd windbg 从微软官网下载windows sdk setup安装,选择框只选择Debugging …,只安装windbg,不要从win7上的windbg打包放在windows 10上用,虽然平时可以用,没有问题,但是以后用pykd时可能会出问题,安装windbg最靠谱的方法是从官网下载winsdksetu.exe安装!!! pykd 从pykd...
WinDbg配置和使用基础
轻锋的专栏
07-21 6653
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 1. WinDbg介绍:     Debugging Tools and Symbols: Getting Started http://www.microsoft.com/whdc/devtools/debugging/debugsta
如何安装windbg工具
weixin_34396902的博客
01-16 665
方法一 (安装后未找到安装路径在那)请通过此链接下载Web安装版的Windows SDK:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en并在安装时清除所有组件的安装复选,并勾选“Debuggin...
windbg调试C#程序
juns6的专栏
07-07 4318
Windbg安装与配置。 Not found clr. 查看最耗内存的地方。 查看程序死锁。
WinDbg+SOS:Web服务器High CPU Hang(100%)实例分析
lbq1221119
06-17 746
下午,msn上面一个朋友发了一个dump文件过来,说是Web服务器的CPU使用率在100%,找不到问题在什么地方,让帮忙看看,遂让把dump文件传过来,找找问题出在哪儿。       Framework2.0,Windows 2k的OS。       加载了Dump文件之后,接着加载2.0版本的SOS扩展调试模块:       .load C:/WINDOWS/Mi
使用WinDbg —— .NET篇 (五)
ecjtu_luowei的专栏
10-25 1381
6.2  终结方法 C++语言里面有个概念叫做析构函数,析构函数的语法和C#的终结方法一样,都是通过“~” + 类名作为函数名。也有人把C#的终结方法叫做析构函数,然而我还是比较喜欢终结方法这种叫法,一者因为C#中的终结方法的执行机制跟C++的析构函数是完全不一样的,被称作析构函数容易混淆;二者因为终结方法编译后的模块中,生成的IL中能看到生成的方法名就叫做Finalize。 之前我们看到
windbg 安装下载
04-04
Windbg是一个Windows调试器工具,可以用于分析和解决Windows操作系统和应用程序的问题。以下是Windbg安装和下载步骤: 1. 下载Windbg安装程序 可以从微软官网下载Windbg安装程序,也可以从第三方网站下载。建议从微软官网下载,以确保安装文件的安全性。 2. 安装Windbg 运行下载的Windbg安装程序,按照向导提示完成安装安装过程中可以选择安装的组件和安装路径。 3. 配置Windbg 安装完成后,需要配置环境变量,以便在命令行中使用Windbg。将Windbg安装路径添加到系统环境变量的Path中即可。 4. 运行Windbg 打开命令行窗口,输入windbg即可运行Windbg调试器。 需要注意的是,Windbg是一个高级调试工具,需要一定的调试技能和经验。建议在熟悉Windbg的使用方法之前,先学习一些调试基础知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • SQL Server2012安装教程 80583
  • unity 五种旋转方式localEulerAngles、eulerAngles、rotation、localRotation和Rotate的区别 59127
  • unity中四种读取txt文件的方法和一种写入txt方法 47340
  • Unity中使用Destroy删除游戏物体的大坑 29479
  • C#读取word文档文本 21271

分类专栏

  • 上位机 7篇
  • .net core 6篇
  • redis 1篇
  • python 9篇
  • 音频处理 5篇
  • wpf 5篇
  • svn 2篇
  • 嵌入式 3篇
  • dnSpy 1篇
  • 机器学习 3篇
  • 图像处理C# 21篇
  • 多线程 8篇
  • 依赖注入 1篇
  • Java 4篇
  • wcf 10篇
  • 消息队列 1篇
  • RDLC报表 1篇
  • 语音合成(TTS) 1篇
  • DevExpress 1篇
  • shader 1篇
  • Unity3D 19篇
  • 电脑技术 11篇
  • C#编程 112篇
  • lua 2篇
  • ASP.NET 4篇
  • IIS 2篇
  • 数据库 19篇
  • NuGet 1篇
  • 算法 1篇
  • 发布部署 1篇
  • 聊天机器人 6篇
  • Linux 13篇

最新评论

  • 应用程序远程连接redis失败原因(Linux)

    用户小白白白白猿: 大佬!膜拜

  • Unity中使用Destroy删除游戏物体的大坑

    weixin_42028762: 遇到同样的问题!非常感谢!

  • 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者 是通过包含 overrideMode="Deny

    小丶J: 确实有用

  • winform使用CefSharp嵌入浏览器

    zxy2847225301: 客气了

  • winform使用CefSharp嵌入浏览器

    。。。小猫咪: 大佬,真的十分感谢!,我用nuget下载过很多版本,.net版本,VS版本都试过很多种,在别人的电脑上都可以运行,在我电脑上会退出报一个icu_util错误,用您这个居然可以了,神奇了,还换过用webview2做但是这个基于edge浏览用户很多不支持。用回cefsharp终于可以,太感谢了

大家在看

  • HC32L130 外部IO中断 23
  • DVWA 靶场 JavaScript 通关解析
  • HC32L130/HC32L136开发之软件模拟IIC驱动AT24C64 126
  • 深入分析并可视化城市轨道数据
  • PPT模板使用手册

最新文章

  • 利用C#和Snap7工具模拟S7通信(包含DB地址讲解)
  • Dnspy附加进程调试---代码被优化及无法获取局部变量
  • 一个巧用委托解决的问题(C#)
2024年10篇
2023年28篇
2022年52篇
2021年19篇
2020年40篇
2019年34篇
2018年50篇
2017年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源胶水商标起名早恋怎么办方姓宝宝起名及注释男生空间素材大图燃野少年的天空演员表j联赛姓薛男孩起名字大全对学校起个名字谢咏老师起名网址2020年5月份宝宝起名三才五格起名酒店起名取名大全集包姓男宝宝起名健康品牌起名超级马里奥64下载一字起名男孩名字的叶辰萧初然小说(叶辰)免费阅读最新章节给缺土缺水的男孩起名书店起店名哪个网是正规的起名网给小女孩起个宝宝小名乳名大全王艺曈花与梦旅人小孩起名大全男孩鼠宝宝木命人起名字吗免费起名测试名软件宝宝起名企业海字的起名字饺子馆起姓名白蛇新传淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化