概述
今天软件部经理说我们的软件在别人的电脑上运行崩溃我们需要知道哪一行出错了。我当时就懵了,什么在开玩笑吧。之后经理让我们学习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:TempMicrosoftSymbol*http://msdl.microsoft.com/download/symbols添加到Symbol path里,其中D:Temp、MicrosoftSymbol是用来保存下载的微软符号文件的。
设置源码路径,就是你的程序所在的文件夹
之后将dmp文件直接拖入其中运行以下命令
.reload 加载设置的符号文件
!analyze -v 自动分析
最后感谢我所参考的博主以及我们软件部经理。移动出来的经理就是不一样。
最后
以上就是拼搏山水为你收集整理的Dmp在WinDbg上的应用的全部内容,希望文章能够帮你解决Dmp在WinDbg上的应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复