一、使用程序自动生成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文件的生成及的分析相关推荐

  1. java 生成dump_java dump文件怎么生成和分析-JMAP用法详解

    jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...

  2. Dump文件的生成和使用

    1 简介 第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事 ...

  3. JVM调优 dump文件怎么生成和分析

    1.获取JVM的dump文件的两种方式 1. JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError #生成堆文件地址: - ...

  4. java dump文件怎么生成和分析-JMAP用法

    jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...

  5. java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析

    1.场景 通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出. 对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策. 这时候怎么办 ...

  6. Windows下dump文件的生成

    Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump.内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump.用户模式Dump进一步可 ...

  7. linux中dump文件怎么生成,linux下设置core dump文件生成的方法

    /proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展.文件内容为1,表示添加pid作为扩展名, 生成的core文件格式为      core ...

  8. Java堆转储文件的生成及工具分析

    因Java堆是Java对象在内存中使用的主要内存空间,当发生内存溢出或泄漏时,保存堆信息是问题产生原因的重要原料及问题分析的基础,而后才能分析追根溯源. 这里记录演示产生内存溢出生成堆转储文件,使用工 ...

  9. 如何手动生成Dump文件并分析Dump文件

    大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查: 1).右键点击"我的电 ...

最新文章

  1. 对接kafka_flume对接kafka多路径同时收集日志,配置怎么写?
  2. [转载]Linux从程序到进程
  3. NCBI SRA数据库使用详解
  4. Uploadify v3.2.1
  5. base64图片保存获取本地路径
  6. lazada发货_Lazada发货用什么物流?费用要多少?
  7. 本地调试微信程序ngrok
  8. [swift] LeetCode 62. Unique Paths
  9. 关联Left Outer Join的第一条记录
  10. 2014_7_23 关于端口重用(3)
  11. python lambda函数两个列表大小关系_python lambda结合列表推导式?
  12. CRLF line terminators导致shell脚本报错:command not found --转载
  13. vue插件挂载html6,vue6
  14. 好用的 Mac 应用程序、软件和工具
  15. xp计算机组策略怎么打开,WinXP系统打开组策略的命令是什么?
  16. JS 将对象拆开拼接成 URL
  17. GICv3软件overview手册之发送和接受SGI
  18. 向量的相似度计算常用方法
  19. 贝恩2021技术报告:到2025年,30%的云服务供应商将专注于人工智能计算工作负载
  20. 阿里云盘内测申请_阿里云网盘 Teambition 内测申请开放!

热门文章

  1. SVN库迁移整理方法总结
  2. 不使用配置文件动态注册HttpModule
  3. 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛
  4. 在loadrunner中使用winsocket协议编写脚步三部曲
  5. 项目经理的几个重要转变
  6. MySql The service could not be started
  7. 第一个小项目 - 去掉指定文件中的注释
  8. Android Permission(授权)大全
  9. ISIS和OSPF的比较
  10. LeetCode 426. 将二叉搜索树转化为排序的双向链表