博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用dbghelp生成dump文件以及事后调试分析
阅读量:4581 次
发布时间:2019-06-09

本文共 1628 字,大约阅读时间需要 5 分钟。

来源:http://www.cnblogs.com/appsucc/p/3458906.html

前言

在产品的实际应用环境中,如果我们的程序在客户那里出现了问题,例如程序异常了,而这个时候的现象又不能还原或者很难还原重现,那么只有使用dump文件来保存程序的当前运行信息,例如调用堆栈等,同时使用符号文件来定位问题了;这里主要讲解使用dbghelp库来生成输出dump文件,同时使用符号文件和windbg来分析问题。 样例代码

1 #include "stdafx.h" 2 #include 
3 #include
4 #include "dbghelp.h" 5 using namespace std; 6 LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo) 7 { 8 cout << "Enter TopLevelExceptionFilter Function" << endl; 9 HANDLE hFile = CreateFile( _T("project.dmp"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 10 MINIDUMP_EXCEPTION_INFORMATION stExceptionParam; 11 stExceptionParam.ThreadId = GetCurrentThreadId(); 12 stExceptionParam.ExceptionPointers = pExceptionInfo; 13 stExceptionParam.ClientPointers = FALSE; 14 MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),hFile,MiniDumpWithFullMemory,&stExceptionParam,NULL,NULL); 15 CloseHandle(hFile); 16 getchar(); 17 return EXCEPTION_EXECUTE_HANDLER; 18 } 19 20 int _tmain(int argc, _TCHAR* argv[]) 21 { 22 cout<<"Enter Main Function"<

该段代码很简单,有几个API函数大家查查msdn即可;我就不再讲解了.

工程设置
由于使用了dbghelp库,因此我们需要配置库依赖以及头文件包含信息;设置头文件包含如下图所示:

设置库文件依赖如下图所示:

设置好之后,即可成功编译该工程代码,同时将dbghelp.dll文件放入可执行文件目录下;最后结果如下图所示:
由于我默认设置了生成符号文件,即DumpProject.pdb文件;关于符号文件的生成,如下图设置所示:
运行程序
双击DumpProject.exe文件,根据代码逻辑,由于程序有异常,因此会生成dump文件,运行结果如下图所示:
同时生成了project.dmp文件,如下图所示:
分析问题
得到了dmp文件,符号文件,同时又有对应的源码,这时使用WinDbg工具来解决问题,找出异常出在哪里。
打开WinDbg工具,设置好符号文件位置目录,源码文件位置目录,然后打开project.dmp文件,显示如下所示:
在WinDbg命令行中输入如下!analyze -v命令,从而可以分析出异常出现的具体位置,如下图所示:
结束
方便快捷的定位分析问题,提高效率;

 

转载于:https://www.cnblogs.com/spriteflk/p/4861272.html

你可能感兴趣的文章
20170320_系统管理_部门管理2
查看>>
csust1086蘑菇真的贵,友情价更高
查看>>
有关指针和数组的理解
查看>>
Module模式
查看>>
《javascript高级程序设计》读书笔记(一)javascript简单介绍
查看>>
NOI2010 超级钢琴
查看>>
第一次冲刺最后一次报告
查看>>
netfilter/iptables全攻略
查看>>
laravel5.5 认证JWT使用
查看>>
wpf Smith.WPF.HtmlEditor 使用方法
查看>>
PDO分页
查看>>
2018-2019-2 网络对抗技术 20165333 Exp7 网络欺诈防范
查看>>
【Python—windows 下 virtualEnv 使用】
查看>>
【Luogu】P3177树上染色(树形DP)
查看>>
国内4G频段划分
查看>>
20120104登陆与改密码
查看>>
How Does Caching Work in AFNetworking? : AFImageCache & NSUrlCache Explained
查看>>
UITableViewCell背景色.选中背景色,分割线,字体颜色设置
查看>>
MyBatis笔记一:GettingStart
查看>>
查找不同的木棍
查看>>