WinDbg安装入坑3(C#)

这篇具有很好参考价值的文章主要介绍了WinDbg安装入坑3(C#)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

使用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出转储文件,如下图:

WinDbg安装入坑3(C#)

2.1   使用WinDbg Preview打开Dump文件

WinDbg安装入坑3(C#)

既然是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.

如下图:

WinDbg安装入坑3(C#)

那么最后试试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.

WinDbg安装入坑3(C#)

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

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

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

WinDbg安装入坑3(C#)

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

WinDbg安装入坑3(C#)

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

WinDbg安装入坑3(C#)

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.

WinDbg安装入坑3(C#)

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

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

WinDbg安装入坑3(C#)

 文章来源地址https://www.toymoban.com/news/detail-489941.html

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

~~[4d24]s
 !clrstack

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

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

WinDbg安装入坑3(C#)

网上有博主说可以用命令

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

WinDbg安装入坑3(C#)

 

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

WinDbg安装入坑3(C#)

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

接着输入

 .load soswow64命令

WinDbg安装入坑3(C#)

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

WinDbg安装入坑3(C#)

好了,本文到此结束。 

 

 

 


 

 

到了这里,关于WinDbg安装入坑3(C#)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于windows上Python3.12.0安装FastAPI入坑指南

    #工作笔记#  先说下起因: 年前兄弟说有个webapi的需求看怎么解决,抽空想到Python比较容易上手,而且FastAPI性能号称拥有可与NodeJS和Go并肩的极高性能。 FastAPI官网注明使用 Python 3.8+ ,而我本机又有从Py3.6到Py3.12的每个大版本,见下图 接着入坑开始了。。。 #问题描述: 1 )

    2024年02月22日
    浏览(50)
  • 使用 AI 编程助手CodeWhisperer,开发如有神助

    前段时间体验了chatGPT,听说它可以写代码,结果发现更多的只是一个对答写小作文的百度助手,虽然也能写代码,但不是我想要的,可以在idea中可以快速生成代码块的。一个偶然的机会,从微信群里了解到,由亚马逊云科技推出的CodeWishPerer开发插件,可以在多个开发环境中

    2024年02月16日
    浏览(37)
  • Word中使用ChatGPT,写文档如有神助

    【部署教程】国内网络可用,最强 ChatGPT 学术论文写作工具 原创****付费 Word GPT Plus 是一个集成了 chatGPT 模型的 Word 插件。它允许你基于你在文档中写的内容生成文本。你可以使用它来翻译、总结、润色或者从零开始写一篇文章。 使用GPT-3.5 API生成文本并支持选择模型 支持设

    2024年02月01日
    浏览(36)
  • 一个简单的注册页面,如有错误请指正(2.css)

    这段CSS代码定义了页面的样式,让我逐个解释其功能: 1. `* {}`:通配符选择器,用于将页面中的所有元素设置统一的样式。这里将margins和paddings设置为0,以去除默认的边距。 2. `div img {}`:选择页面中所有div元素内的img元素,并设定其样式。这里设置img元素的宽度为视窗宽度

    2024年02月08日
    浏览(34)
  • DIY NAS服务器之OMV 5.6入坑指南(二)- 安装omv-extras插件

    DIY NAS服务器之OMV 5.6入坑指南(一)-openmediavalut 5.6安装 DIY NAS服务器之OMV 5.6入坑指南(二)- 安装omv-extras插件 DIY NAS服务器之OMV 5.6入坑指南(三)- 切换系统源 DIY NAS服务器之OMV 5.6入坑指南(四) -安装docker和Portainer DIY NAS服务器之OMV 5.6入坑指南(五) -数据同步及管理 目录

    2024年02月05日
    浏览(45)
  • WPS Office AI实战:Word写作如有“神”助

    打开电脑,基本上你就会与文档打交道,是时候升级处理文档的方式了,WPS AI 的出现,给了文档处理提供了新的范式。 生成文档,根据提示词生成新内容 文档分析,快速了解文档核心要点,节省阅读时间 根据你感兴趣的内容,推荐相关问题 https://ai.wps.cn/ 官方网站 如果你已

    2024年02月15日
    浏览(36)
  • 由于安装了Microsoft Access Database Engine 64 位组件,无法安装32位的问题

    如果已安装 Office 365,并排检测将阻止安装继续进行。 而是从命令行执行这些组件的 /quiet 安装。 尝试参考以下步骤 (1) 下载 Microsoft Access Database Engine 2016 Redistributable (2) 以管理员身份打开命令提示符。 (3) 提供.exe 文件的完整路径并添加’/ quiet’。像下面。 它将成功安装 A

    2024年02月16日
    浏览(40)
  • 【pygame入门】pygame游戏实例入门级教程,如有不懂欢迎随时补充留言。

    pycharm+anconda3; 第三方库: pygame;(从标题看这句略显多余) 方法一:直接在pycharm里面安装。 files-seting-project-python Interpreter 在左侧界面的最左侧边栏上面有个加号,点击后在弹出页面搜索需要的第三方库,然后直接安装。 方法二:pip安装。 因为用的是anconda所以需要在终端里面

    2024年02月04日
    浏览(48)
  • 安装MySQL时出现 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

    --------------------------- mysqld.exe - 系统错误 --------------------------- 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。  --------------------------- 确定    ---------------------------     安装MySQL时出现 “This application requires Visual Studio 2013 x64 Redistributable. Please i

    2024年02月05日
    浏览(64)
  • 安装msql: 由于找不到VCRUNTIME140_1.dd,无法继续执行代码。重新安装程序可能会解决此问题

    在安装mysql ,执行mysqld --install 命令时,报出了下面的错误 vcruntime140_1.dll 是VC++2015库的一个文件。         Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++集成了便利的除错工

    2024年02月08日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包