dump文件的生成及的分析
一、使用程序自动生成dump文件。在程序运行崩溃时,会自动生成到程序运行目录。添加以下。
#include <DbgHelp.h>
#pragma comment(lib, "dbghelp.lib")//注意:动态库dbghelp.dll也要加入到运行目录下。
LONG __stdcall ExceptCallBack(EXCEPTION_POINTERS *pExcPointer)
{
char szFileName[1024] = { 0 };
GetModuleFileName(NULL, szFileName, sizeof(szFileName));
string strFilePath(szFileName);
int pos = strFilePath.find_last_of('\\', strFilePath.length());
string strDir = strFilePath.substr(0, pos + 1); // 获取文件夹路径
int suffixPos = strFilePath.find_last_of(".", strFilePath.length());
string strFile = strFilePath.substr(pos + 1, suffixPos - pos - 1); // 文件名称
string strDmpfile = strDir.append(strFile).append(".dmp"); // 配置文件路径
string erromsg = "程序崩溃!相关信息记录在:" + strDmpfile;
MessageBox(NULL, erromsg.c_str(), NULL, MB_OK);
//创建dump文件
HANDLE hFile = CreateFile(strDmpfile.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//向文件写下当前程序崩溃相关信息
MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;
loExceptionInfo.ExceptionPointers = pExcPointer;
loExceptionInfo.ThreadId = GetCurrentThreadId();
loExceptionInfo.ClientPointers = TRUE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, (MiniDumpNormal), &loExceptionInfo, NULL, NULL);
CloseHandle(hFile);
return EXCEPTION_EXECUTE_HANDLER;
}
int main(int argc, char* argv[])
{
//main开始,注册生成dump回调
SetUnhandledExceptionFilter(ExceptCallBack);
...
}
二、然后将对应版本的pdb文件和dump文件放到同一个文件夹内。用windbg.exe 加载“Open crash Dump”.
加载后,输入命令:“.ecxr” 来显示错误上下文
“ kb ” 来显示调用堆栈
即可定位问题行数。
或者用 !analyze -v 来自动分析
转载于:https://blog.51cto.com/danielllf/1609304
dump文件的生成及的分析相关推荐
- java 生成dump_java dump文件怎么生成和分析-JMAP用法详解
jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...
- Dump文件的生成和使用
1 简介 第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事 ...
- JVM调优 dump文件怎么生成和分析
1.获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: - ...
- java dump文件怎么生成和分析-JMAP用法
jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...
- java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析
1.场景 通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出. 对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策. 这时候怎么办 ...
- Windows下dump文件的生成
Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump.内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump.用户模式Dump进一步可 ...
- linux中dump文件怎么生成,linux下设置core dump文件生成的方法
/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展.文件内容为1,表示添加pid作为扩展名, 生成的core文件格式为 core ...
- Java堆转储文件的生成及工具分析
因Java堆是Java对象在内存中使用的主要内存空间,当发生内存溢出或泄漏时,保存堆信息是问题产生原因的重要原料及问题分析的基础,而后才能分析追根溯源. 这里记录演示产生内存溢出生成堆转储文件,使用工 ...
- 如何手动生成Dump文件并分析Dump文件
大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查: 1).右键点击"我的电 ...
最新文章
- 对接kafka_flume对接kafka多路径同时收集日志,配置怎么写?
- [转载]Linux从程序到进程
- NCBI SRA数据库使用详解
- Uploadify v3.2.1
- base64图片保存获取本地路径
- lazada发货_Lazada发货用什么物流?费用要多少?
- 本地调试微信程序ngrok
- [swift] LeetCode 62. Unique Paths
- 关联Left Outer Join的第一条记录
- 2014_7_23 关于端口重用(3)
- python lambda函数两个列表大小关系_python lambda结合列表推导式?
- CRLF line terminators导致shell脚本报错:command not found --转载
- vue插件挂载html6,vue6
- 好用的 Mac 应用程序、软件和工具
- xp计算机组策略怎么打开,WinXP系统打开组策略的命令是什么?
- JS 将对象拆开拼接成 URL
- GICv3软件overview手册之发送和接受SGI
- 向量的相似度计算常用方法
- 贝恩2021技术报告:到2025年,30%的云服务供应商将专注于人工智能计算工作负载
- 阿里云盘内测申请_阿里云网盘 Teambition 内测申请开放!