使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试

这篇具有很好参考价值的文章主要介绍了使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果是如题所述的Dump文件。

当使用WinDbg Preview调试时,输入命令!threads,提示如下:

0:000> !threads
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.7.3750.0
SOS Version: 4.8.4420.0
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.

即使去生成dump的机器上Copy了相关版本的dll(sos、clr、mscordacwks)再加载,也是不行,其实吧,就是工具用错了😂

应该使用对应32位版本的WinDbg(X86)工具调试,但是当我输入命令时提示依然不对:

0:000> !threads
SOS does not support the current target architecture.

这看起来就是SOS不对口呗,后来几经周折,在stackoverflow上找到了一个靠谱儿的答案:

使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试

 最终,需要加载一个soswow64.dll工具来协助,大家可以看下这个工具的介绍,稍微了解一下:

WOW64

将soswow64.dll放到一个文件夹下,比如C:\DLL\soswow64.dll

再来打开Windbg调试器:使用命令加载此dll

.load C:\DLL\soswow64.dll

 0:000> .load C:\DLL\soswow64.dll
Successfully hooked IDebugControl::GetExecutingProcessorType.
Failed patching DbgEng!X86MachineInfo::ConvertCanonContextToTarget, stack related commands may not work correctly.

注意以上Failed提示,部分堆栈相关命令可能无法正常工作,但问题不大,先继续!

然后,使用命令!wow64exts.sw切换到x86模式下
0:000> !wow64exts.sw
Switched to Guest (WoW) mode

Ok,万事俱备,接下来就可以正常的玩耍了:

0:000:x86> !t
ThreadCount:      26
UnstartedThread:  0
BackgroundThread: 18
PendingThread:    0
DeadThread:       7
Hosted Runtime:   no
                                                                         Lock  
       ID OSID ThreadOBJ    State GC Mode     GC Alloc Context  Domain   Count Apt Exception
   0    1 2ac8 00e55220     26020 Preemptive  03019044:00000000 00e4f428 0     STA System.Runtime.InteropServices.ExternalException 0300147c (nested exceptions)
   2    2 2900 00e646f0     2b220 Preemptive  00000000:00000000 00e4f428 0     MTA (Finalizer) 
   4    3 298c 00f296f0   102a220 Preemptive  00000000:00000000 00e4f428 0     MTA (Threadpool Worker) 
   5    7 2b58 05c99750   1020220 Preemptive  00000000:00000000 00e4f428 0     Ukn (Threadpool Worker) 
   6   10 288c 05c98208   202b220 Preemptive  00000000:00000000 00e4f428 0     MTA 
  10  127 2840 2121eb28   202b220 Preemptive  0301C630:00000000 00e4f428 0     MTA 
  11  241 2b40 2121db50   202b220 Preemptive  00000000:00000000 00e4f428 0     MTA 
  12  134 139c 2121cb78   202b220 Preemptive  02FB0D2C:00000000 00e4f428 0     MTA 
  13  144 1cd0 21221020   202b220 Preemptive  00000000:00000000 00e4f428 0     MTA 
   8  224 251c 21221ab0     20220 Preemptive  00000000:00000000 00e4f428 0     Ukn 
XXXX  196    0 1fc90578     39820 Preemptive  00000000:00000000 00e4f428 0     Ukn 
XXXX  131    0 401aa040     39820 Preemptive  00000000:00000000 00e4f428 0     Ukn 
XXXX  157    0 21356528     39820 Preemptive  00000000:00000000 00e4f428 0     Ukn 
XXXX    6    0 1f222030     39820 Preemptive  00000000:00000000 00e4f428 0     Ukn 
  14  242 27c4 1fc91008   202b220 Preemptive  0301E630:00000000 00e4f428 0     MTA 
  15  205 1d54 373a1500   202b220 Preemptive  03017400:00000000 00e4f428 0     MTA 
  16  203 2458 21354ac0   202b220 Preemptive  02E39E98:00000000 00e4f428 0     MTA 
  17  190 2b7c 21356fb8   202b220 Preemptive  0301A630:00000000 00e4f428 0     MTA 
  18  108 2e04 3739f550   202b220 Preemptive  03020630:00000000 00e4f428 0     MTA 
  19   33 1784 21223a60     2b220 Preemptive  00000000:00000000 00e4f428 0     MTA 
XXXX    5    0 21354578   8039820 Preemptive  00000000:00000000 00e4f428 0     Ukn (Threadpool Completion Port) 
XXXX  113    0 401ab560   1039820 Preemptive  00000000:00000000 00e4f428 0     Ukn (Threadpool Worker) 
XXXX   41    0 401abaa8   1039820 Preemptive  00000000:00000000 00e4f428 0     Ukn (Threadpool Worker) 
  20  175 1508 21357a48   8029220 Preemptive  00000000:00000000 00e4f428 0     MTA (Threadpool Completion Port) 
  21  118 2158 1fc91550   1029220 Preemptive  00000000:00000000 00e4f428 0     MTA (Threadpool Worker) 
  22  123 2f14 3739e578   1029220 Preemptive  00000000:00000000 00e4f428 0     MTA (Threadpool Worker) 

附soswow64.dll下载地址(源码下载不完整,无法正常编辑):

https://github.com/poizan42/soswow64/releases

WinDbg调试,值得学习的技术,加油!
End😎文章来源地址https://www.toymoban.com/news/detail-475196.html

到了这里,关于使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • windbg-windows调试工具来抓端游crash dump

    windbg下载有两种方式: Install WinDbg - Windows drivers | Microsoft Learn 从微软应用商店下载 dump上的windows的局部变量解析部分进行windbg本地解析查看 下载对应crash链接中的dmp(即minidump)、pdb、exe文件至本地 打开winDbg工具,进行配置 配路径:Settings —— Debugging settings—— Source path配

    2024年02月19日
    浏览(34)
  • Windows下关于windbg 调试 dump文件过程的环境配置以及注意事项

    在windows下,异常的调试很便捷,除了使用vs调试外还可以使用微软的windbg,windbg一般在安装vs的时候可以选装(windows开发套件),如果你是使用vs的开发者,那可以去磁盘中搜索windbg.exe看看有没有在安装vs的时候安装windbg,如图: 如果没有安装windbg也没关系,可以去微软的官网下载 下载

    2024年02月09日
    浏览(50)
  • 开源进程/任务管理服务Meproc使用之HTTP API

    本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。 Meproc所提供的全部 API 的 URL 都是相同的。 例如 在下面的小节中,我们使用 curl 命令向您展示 API 的方法、参数和请求正文。 要启动任务,您应该发送带有 JSON 正文的 POST 请求。 JSON 主体的所有字段为:

    2024年01月19日
    浏览(31)
  • .NET -- 使用Dump文件分析异常

    目录 1. Dump文件 2. 程序崩溃时自动生成Dump文件 2.1 注册表生成 2.2 代码生成 3. 手动生成Dump文件 3.1 任务管理器生成 3.2 VS生成 4. Dump文件调试分析 4.1 简易崩溃测试代码 4.2 VS2022调试 4.3 非本机测试 Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。

    2024年02月04日
    浏览(32)
  • STM32 hal库使用笔记之FreeRTOS—任务创建、删除,任务挂起、恢复,任务中断管理

    一、简介 1.FreeRTOS简介     RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。而Free显而易见体现的是其免费性。总的来说这是一个免费的嵌入式实时操作系统。     其特点是:免费开源、可剪裁(独立性强,适应范围广)、简单、优先级/任务不限(但是受到不

    2024年02月04日
    浏览(49)
  • linux 管理进程和计划任务

    目录 一、进程原理 二、进程工作过程 三、进程类型 四、管理进程 五、前后台调度 六、定时任务 七、管理定时任务                 一、进程原理 进程:指正在运行的程序称之为进程 程序:指的是没有运行的代码 线程:真正的执行者,是复制了一部分进程的代码,可以

    2024年02月03日
    浏览(88)
  • Linux 进程和计划任务管理

    保存在硬盘、光盘等介质中的可执行代码和数据· 文件中静态保存的代码 在CPU及内存中运行的程序代码 动态执行的代码 父、子进程         每个程序可以创建一个或多个进程 load average: 0.00, 0.01, 0.05      系统平均负载  1分钟 5分钟 15分钟 查看 load average 的命令有:top  w

    2024年04月23日
    浏览(37)
  • Linux——进程和计划任务管理

    个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。 座右铭:海不辞水,故能成其大;山不辞石,故能成其高。 个人主页:小李会科技的主页 目录 程序和进程的关系  命令总结 进程的启动方式 快捷键的讲解 程序和进程的关

    2024年02月05日
    浏览(47)
  • 高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务

    高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务 nohup :nohup是“no hangup”的缩写,用于在后台不挂断的运行命令,使其在用户退出或终端关闭时不受影响。它通过忽略挂断(SIGHUP)信号实现这一功能。换句话说,nohup 是一条 Unix 命令,用于在后台执行程序,即使

    2024年02月10日
    浏览(53)
  • Linux云计算——进程和任务管理

    作者简介:一名云计算网络运维人员、每天分享云计算运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 本章将会讲解Linux云计算中的进程和任务管理 ①程序 保存在硬盘、光盘等介质中的可执行代码和数据 静态保存的代码 ②进程

    2023年04月21日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包