Dmp在WinDbg上的应用

     今天软件部经理说我们的软件在别人的电脑上运行崩溃我们需要知道哪一行出错了。我当时就懵了,什么在开玩笑吧。之后经理让我们学习Dmp文件和WinDbg。

    详细资料我放在网盘中windbg的word文档

    一.生成map文件

         这个对应环境百度吧

     一.让程序自动生成dmp文件

          我们首先下载DbgHelp  DbgHelp下载地址  

          其中有  dbghelp.dll  Dbghelp.h  Dbghelp.lib我们将它们复制到我们的程序中去,然后在程序的头文件中加入如下代码

#include "DbgHelp.h"
#pragma comment (lib,"dbghelp.lib")

然后我们在定义如下函数

LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
    HANDLE lhDumpFile = CreateFile(_T("DumpFile.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL);

    MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;

    loExceptionInfo.ExceptionPointers = ExceptionInfo;

    loExceptionInfo.ThreadId = GetCurrentThreadId();

    loExceptionInfo.ClientPointers = TRUE;

    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL);

    CloseHandle(lhDumpFile);

    return EXCEPTION_EXECUTE_HANDLER;
}

最后在我们的主函数开始时就使用

SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);

然后运行程序,出错后就有*.dmp文件了。

        二.使用WinDbg

             我们首先更具电脑系统来下载WinDbg WinDbg下载地址 我是win10的64位系统所以下载的是64位的。这个安装十分的简单,一直继续就可以了。

             然后是设置环境

             先是符号设置点开File->Symbol File Path...,设置符号文件所在路径,其中要有debug后的*.pdb文件

             (盗用的是别人的图)

             另外,微软也提供了很多有用的系统符号文件                                                                                                                                    将路径srv*D:\Temp\MicrosoftSymbol*http://msdl.microsoft.com/download/symbols添加到Symbol path里,其中D:\Temp、MicrosoftSymbol是用来保存下载的微软符号文件的。

             设置源码路径,就是你的程序所在的文件夹

             之后将dmp文件直接拖入其中运行以下命令

             .reload        加载设置的符号文件

             !analyze -v         自动分析

 

最后感谢我所参考的博主以及我们软件部经理。移动出来的经理就是不一样。

 

             

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值