1、生成dmp的程序

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

//设置异常处理回调函数
SetUnhandledExceptionFilter(UnhandledExceptionFilter);

//异常处理代码
//EXCEPTION_EXECUTE_HANDLER equ 1 表示我已经处理了异常,可以优雅地结束了 
//EXCEPTION_CONTINUE_SEARCH equ 0 表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束 
//EXCEPTION_CONTINUE_EXECUTION equ -1 表示错误已经被修复,请从异常发生处继续执行 
LONG UnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
    CString   strDumpFile;
    strDumpFile.Format("%d",CTime::GetCurrentTime().GetTickCount());
    strDumpFile   +=  ".dmp ";
    HANDLE   hFile   =   CreateFile(strDumpFile,   GENERIC_WRITE,   FILE_SHARE_WRITE,   NULL,   CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,   NULL   );

if   (hFile!=INVALID_HANDLE_VALUE)
    {
        MINIDUMP_EXCEPTION_INFORMATION   ExInfo;

ExInfo.ThreadId   =   ::GetCurrentThreadId();
        ExInfo.ExceptionPointers   =   ExceptionInfo;
        ExInfo.ClientPointers   =   NULL;

//   write   the   dump
        BOOL   bOK   =   MiniDumpWriteDump(GetCurrentProcess(),   GetCurrentProcessId(),   hFile,   MiniDumpNormal,  &ExInfo,   NULL,   NULL   );
        CloseHandle(hFile);
    }

theApp.PostThreadMessage(WM_QUIT,0,0);
    return EXCEPTION_EXECUTE_HANDLER;
}

2、调试dump文件

1)用windbg。

2)用vc,把dmp文件和exe, pdb文件放在同一目录下, 然后用编译器(如vc)打开, 然后开始调试就会中断到刚才中断的地方.

3、以下是网上搜集到的条件,尚未验证是否是必需的,如果不能正确的生成dmp,可尝试以下方法

1)SetUnhandledExceptionFilter()并不能处理所有的异常,比如CRT异常需要调用_set_invalid_parameter_handler()才行

1)要设置c运行库异常处理函授。这样当出错后,会引发你的异常处理,你的处理中,可以直接丢掉或重新启动你的exe,或写入log文件。

2)注意生成的release应用程序需要开启“生成调试信息”选项。

2)使用VS2008的话,不需要开启“生成调试信息”选项就可以生成的。

3)编译release版本的时候同时生成map文件,具体可以在网上查找一下关于map文件的使用方法。

3)生成可执行文件时在工程属性设置里的“调试”选项里将“生成映射文件”设置为“是”。这主要是用来在出错时通过dump和map文件对错误定位。

4、其他工具

1)生成dump文件需要Dr.Watson,它是Windows自带的调试工具,只要对它进行了设置,程序出错后就可以在相应目录下找到dump文件。可参见如下资料:http://hi.baidu.com/mryongzhang/blog/item/11a774edf9b513d72e2e2167.html

2)adplus是最有用的工具,http://support.microsoft.com/kb/286350/

DMP文件的生成和使用相关推荐

  1. oracle备份数据库dmp定时,SCO Unix系统下定时备份Oracle数据库dmp文件的设置

    Oracle数据库中定时对dmp文件进行备份可以提高数据库的安全性与稳定性,以便于在出现故障时进行恢复.本文我们主要介绍了SCO Unix系统下定时备份oracle数据库dmp文件的知识,接下来就让我 ...

  2. Dump文件的生成和使用

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

  3. oracle取32位唯一码,Oracle导出导入dmp文件命令,以及excel生成32位uuid

    Oracle导出dmp文件命令,以及excel生成64位uuid 导出命令cmd中 expdp mms/xfkjerp@orcl schemas=mms dumpfile=expdp.dmp DIRE ...

  4. dmp格式怎么转换_如何生成转储(dmp)文件--工具篇

    转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种借助第三方工具生成转储文件的方法. 1. 任 ...

  5. VS2010下使用dmp文件和pdb文件定位到dll中崩溃位置的方法

    2018-01-15 创建人:Ruo_Xiao 邮箱:xclsoftware@163.com 一.基础链接 http://blog.csdn.net/itworld123/article/detail ...

  6. VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项

    2018-01-12 创建人:Ruo_Xiao 2018-01-15 修改人:Ruo_Xiao 添加为dump.exe和pdb版本保持一致的原因. 一.minidump文件 崩溃转储是创建一个应用程序 ...

  7. vs2010 利用DMP文件、pdb文件查找release下的异常行号的方法

    2018-01-12 创建人:Ruo_Xiao 开发环境:Windows7,VS2010,WinDbg 6.12. 一.源码 #include "stdafx.h" #includ ...

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

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

  9. 在服务器上导出dmp文件,远程在服务器上导出dmp文件

    远程在服务器上导出dmp文件 内容精选 换一换 由于非工作时间或出差等原因,运维人员无法通过告警管理界面查看告警/事件,但又想实时了解告警/事件的产生或清除情况时,可以配置远程通知规则,将关注的告警/ ...

最新文章

  1. 深入理解风格迁移三部曲(三)--FUNIT
  2. USACO 3.2 Stringsobits(DP)
  3. 痛并快乐着看火箭比赛
  4. 截取屏幕,并保存图片到本地(画廊)
  5. java数组深拷贝和浅拷贝_java中的深拷贝与浅拷贝(值类型 vs 引用类型)
  6. oracle aq_通过Java 8流使用Oracle AQ
  7. Hadoop集群配置搭建
  8. 2021-10-11关于Ubuntu安装搜狗输入法
  9. 《计算机操作系统》练习题
  10. linux高级技巧:rsync同步(二)
  11. 五、数据类型(1):整数带小数点的数
  12. 详细讲述matlab中矩阵的卷积函数convn
  13. tomcat设置编码为UTF-8
  14. SWOT分析流程图模板分享
  15. 小程序微信卡券开发流程
  16. 2021 大学生电子设计竞赛 G题 无人机 识别部分
  17. mysql的填充因子_SQL SERVER索引原理及填充因子
  18. 传统目标检测方法研究(一)
  19. Python获取下周一日期
  20. 智禾教育:淘宝店铺的常见类型有哪些,智禾为你分享介绍

热门文章

  1. fiddler如何看
  2. vue输入查询内容但不查询,切页刷新表格会出现触发查询的不合理情况
  3. 蟠桃会之教育、投资与幸福生活
  4. 修改nz-select中的nz-option设置title属性展示内容。
  5. 使用物联网卡发送短信
  6. jq 编码 php解码,jQuery编码转化base64通过AJAX上传
  7. 微信开发者工具未绑定企业号开发者
  8. 引路蜂技术博客论坛开放
  9. border-radius详解分享
  10. c语言程序设计 doc,C语言程序设计61844.doc