windbg coredump奔溃追踪

Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg是一个强有力的利器。

 生成Dump文件方式

1.1任务管理器

在程序崩溃后,先不关闭程序,在任务管理器中找到该程序对应的进程。右键—>创建转储文件

 此时会在默认的目录下创建出一个dump文件。

可以看出,此种方法只适用于程序崩溃但没有立即自行退出的情况。倘若程序故障后自行退出,则此方法就难以应用。不过,我们可以在注册表中添加如下信息已确保系统在程序崩溃后自行保存一个dump文件:

在注册表中找到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\WindowsError Reporting\LocalDumps

添加项如下图:

其中DumpType代表的含义是:

0 = Create a custom dump  
1 = Mini dump  
2 = Full dump  

如此一来,一旦程序崩溃,系统会在C:\CrashDump下生成一个dump文件。

1.2WinDbg抓取

程序运行崩溃后,先不关闭程序,将WinDbg附加到改进程上。

执行命令:.dump –ma Test.dmp  ,则会产生一个Test.dmp的转储文件。

程序中加入存储Dump的代码

通过SetUnhandledExceptionFilter设置捕获dump的入口,然后通过MiniDumpWriteDump生成dump文件。

如下程序在程序异常时会自行转储一个名为Test.dmp的dump文件。

https://blog.csdn.net/libaineu2004/article/details/81169061

一、下载
微软官网提供的Windbg为windows10版本,win7下不能使用。Win7下使用Windbg需要通过Windows SDK下载,下载链接为//www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b&displaylang=en

安装
如果对windows SDK的其他内容不感兴趣,可只勾选Windbg.
————————————————

开始使用Windbg
微软官网提供了详细的使用教程,参考链接:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/getting-started-with-windows-debugging

在使用之前,需要完成以下任务

判断哪个设备作为服务系统,那个设备作为客户系统。调试器运行在客户系统,程序运行在服务系统。
判断你将要进行用户态调试还是内核态调试。内核态可以拥有极大的权限,可以访问系统的任何部分,许多核心操作系统功能和硬件驱动运行在内核态。用户态拥有很多限制,只能运行在自己的虚拟内存空间,不能直接访问系统。
关于调试内核态,请参考:

关于调试用户态,请参考:Getting Started with WinDbg (User-Mode).

除此之外,还需要做以下事情:

配置符号表。为了使用WinDbg提供的所有高级功能,必须加载正确的符号表。可以参考:Symbols for Windows debugging (WinDbg, KD, CDB, NTSD)。Windows 调试中的符号表
配置源码。如果你的目标是调试你自己的源代码,你需要配置源码路径。
————————————————
https://blog.csdn.net/luchengtao11/article/details/82379374

猜你喜欢

转载自www.cnblogs.com/youxin/p/12111504.html