Dump工具抓取WIN系统堆栈信息

Dump工具抓取堆栈信息

1、安装工具WinDbg

X64版本下载地址:https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi

X86版本下载地址:https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi

下载后,双击 dbg_amd64.msi 运行即可,会自动安装到系统。

2、配置WIN系统注册表

  1. 将下方脚本内容复制粘贴到txt文本,修改保存的路径信息(原D:\dump,需要建立文件夹换成自己的路径),然后保存为.bat脚本文件。
  2. 右击脚本,使用管理员权限运行脚本,配置Dump需要的配置信息。
  3. 在cmd窗口中打开regedit,找到“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps“路径可以查看配置的结果。

脚本内容介绍

@echo 启用Dump

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "D:\dump" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d 10 /f

@echo Dump已经启用

参数说明:

DumpFolder    dump文件生成路径 eg:C:\xxx
DumpType   
							0 = Create a custom dump //自定义dump
							1 = Mini dump  //mini核心dump文件
							2 = Full dum  //所有dump文件,产生的文件较大
							
DumpCount     默认:10				

3、生成dump文件(.dmp)

运行测试的程序,程序崩溃后自动生成.DMP文件到 D:/dump(脚本中设定的)路径

4、用WinDbg分析.dmp文件

4.1、打开关闭.dmp文件

  1. 运行WinDbg软件,然后按【Ctrl+S】弹出符号表设置窗
  2. 将符号表地址:SRVC:\Symbolshttp://msdl.microsoft.com/download/symbols 粘贴在输入框中,点击确定即可。

注:红色字体为符号表本地存储路径,建议固定路径,可避免符号表重复下载。
请添加图片描述
请添加图片描述

  1. 当你拿到一个dmp文件后,可使用【Ctrl+D】快捷键来打开一个dmp文件,或者点击WinDbg界面上的【File=>Open Crash Dump…】按钮,来打开一个dmp文件。第一次打开dmp文件时,可能会收到如下提示,出现这个提示时,勾选“Don’t ask again in this WinDbg session”,然后点否即可。

请添加图片描述

  1. 当你想打开第二个dmp文件时,可能因为上一个分析记录未清除,导致无法直接分析下一个dmp文件,此时你可以使用快捷键【Shift+F5】来关闭上一个dmp分析记录。

4.2、使用命令分析

1、使用 !analyze -v 命令进行分析

  1. 输入命令

    • 在 WinDbg 的命令窗口(通常在窗口的下部),输入以下命令并按回车键:

      !analyze -v
      
  2. 查看分析结果

    • WinDbg 会开始分析 dump 文件,并在命令窗口中显示详细的崩溃原因报告。
    • 这个报告包括了崩溃的简要信息、异常代码,以及调用堆栈(Call Stack)。
    • 您可以在报告中找到崩溃发生的位置,导致崩溃的代码行,以及相关的上下文信息。

可以看到堆栈调用信息,具体是Test()函数中,0x00005空指针NULL_POINTER_READ问题。

MANAGED_STACK: 
    SP               IP               Function
    0000009BB01FE3D0 0000000000000001 xxxxx!Program.Test(IntPtr, Int32, System.String, Int32, UInt16)+0x2
    0000009BB01FE510 00007FFD28F010FD xxxxx!Program.Main()+0x86d

MANAGED_STACK_COMMAND:  !do 0000000000000000

FAULTING_THREAD:  000000000000c150

BUGCHECK_STR:  APPLICATION_FAULT_NULL_POINTER_READ_WRONG_SYMBOLS

PRIMARY_PROBLEM_CLASS:  NULL_POINTER_READ

DEFAULT_BUCKET_ID:  NULL_POINTER_READ

LAST_CONTROL_TRANSFER:  from 00007ffd3f51ac8e to 00007ffd9d26146c

STACK_TEXT:  

2、查看调用堆栈

  1. 检查调用堆栈
    • 分析完成后,您可以使用 k 命令查看详细的调用堆栈。堆栈会显示函数调用的顺序,可以帮助您定位崩溃发生时的具体代码位置。

    • 输入 k 并按回车:

      k
      
    • WinDbg 会显示一个调用堆栈列表,帮助您追踪到崩溃发生的源头。

3、进一步分析

  1. 检查寄存器和内存
    • 使用 r 命令检查崩溃时的寄存器状态。

    • 使用 !address 命令检查特定内存地址的详细信息。

  2. 调试您的代码
    • 通过查看调用堆栈和相关代码,检查是否存在空指针解引用、内存泄漏、线程同步问题等,找到并修复崩溃原因。

参考博客

https://blog.csdn.net/xiao_yi_xiao/article/details/121750283

https://blog.csdn.net/qq_58397358/article/details/128388922

https://blog.csdn.net/Aliven888/article/details/109000020

https://www.cnblogs.com/dachenyi/p/15292984.html

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c dump抓取工具是一种用于从计算机存储器中提取数据的工具。它可以帮助分析师或研究人员在调试或安全审计过程中获取内存快照,以便进一步分析和诊断系统中的问题。 通过使用c dump工具,用户可以捕获整个内存的状态,包括进程、线程、变量、堆栈以及其他关键信息。这对于识别和解决系统崩溃、内存泄漏、代码错误等问题非常有用。 c dump抓取工具提供了一种将内存中的数据导出到一个文件中的方法。用户可以在导出的文件中查看和分析内存中的内容,比如查找特定的对象、变量或代码位置。此工具通常被用于分析和修复程序的错误,因为它可以提供详细的内存状态信息,并允许用户在发生错误时恢复和重现问题。 与其他类似的工具相比,c dump抓取工具具有许多优点。首先,它是高效且快速的,可以在短时间内捕获大量的内存数据。其次,它提供了丰富的过滤和搜索选项,使用户能够根据特定条件快速定位所需的信息。最后,c dump工具是可定制的,用户可以根据自己的需求选择导出哪些信息。 总的来说,c dump抓取工具是一款功能强大且广泛应用的工具,可以帮助用户从计算机内存中提取数据,为系统分析和故障排除提供有价值的支持。 ### 回答2: Cdump是一款强大的抓取工具,用于从寄存器转储的二进制文件中提取数据和信息。这个工具通常用于开发和调试过程中,用于分析和解析内存映像文件或核心转储文件。 Cdump工具具有以下主要功能: 1. 数据提取:Cdump工具可以从二进制文件中提取出指定的数据。通过指定内存地址或数据类型,可以轻松地将数据提取出来进行进一步分析。 2. 符号解析:Cdump工具可以解析二进制文件中包含的符号信息。这对于定位特定函数、变量或对象的位置非常有用,特别是在调试和崩溃分析的情况下。 3. 转储文件分析:Cdump工具可以对转储文件进行分析,帮助开发人员找出导致程序崩溃或异常行为的原因。通过分析转储文件中的堆栈跟踪信息和变量状态,可以追踪程序的执行路径并定位问题。 4. 内存映像分析:Cdump工具可以加载和分析内存映像文件,提取出其中的数据和信息。这对于恢复丢失的数据或分析内存状态非常有用。 总而言之,Cdump是一个功能强大的工具,可以帮助开发人员快速分析和解析二进制文件中的数据和信息。它在开发、调试和崩溃分析过程中具有广泛的应用,有助于提高开发效率和解决问题。 ### 回答3: C Dump抓取工具是一种用于捕获网络数据包的工具。它可以在计算机网络中监视和记录数据包的传输过程。该工具常用于网络安全和网络性能分析。 C Dump抓取工具可以在计算机网络中的任何位置进行操作,包括网络接口、路由器、交换机等。它通过截获发送和接收的网络数据包,并将其以数据流的形式展示和记录。这些数据包可以包含不同的协议信息,如TCP、UDP、ICMP等。 C Dump抓取工具提供了一个强大的界面,可以显示和分析捕获到的数据包。它可以实时显示数据包的详细信息,如源IP地址、目标IP地址、端口号、协议类型等。通过对这些信息的分析,可以识别网络中存在的问题,如网络延迟、丢包、安全漏洞等。 C Dump抓取工具还可以保存和导出数据包,以便进行离线分析和存档。通过对保存的数据包进行深入分析,可以进一步研究网络流量、检测网络攻击和入侵,并进行性能优化。 总而言之,C Dump抓取工具是一种功能强大的网络数据包捕获工具,可以帮助管理员和安全专家监测和分析网络中的数据流量,发现网络问题并采取相应措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值