1:分析程序异常等等信息,在入口处初始化即可

  1. //生成Dump文件信息 OS:Windows
  2. #pragma once
  3.  
  4. #include <windows.h>
  5. #include <imagehlp.h>
  6. #if (_MSC_VER < 1700) // vs2010 and before version
  7. #include <stdlib.h>
  8. #else
  9. #include <tchar.h>
  10. #endif
  11. #include <ctime>
  12. #include <cstdio>
  13.  
  14. #pragma comment(lib, "dbghelp.lib")
  15.  
  16. class MiniDump
  17. {
  18. public:
  19. MiniDump() = delete;
  20. ~MiniDump() = delete;
  21.  
  22. static LONG WINAPI RunUnhandledFilter(struct _EXCEPTION_POINTERS *lpExceptionInfo)
  23. {
  24. LONG ret = EXCEPTION_EXECUTE_HANDLER;
  25. TCHAR szFileName[64];
  26. SYSTEMTIME st;
  27. ::GetLocalTime(&st);
  28. std::srand(static_cast<unsigned int>(std::time(0)));
  29. #if defined(UNICODE)
  30. swprintf_s(szFileName, L"%d-%d-%d-%d-%d-%d-%d-%d.dmp", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, std::rand());
  31. #else
  32. sprintf_s(szFileName, "%d-%d-%d-%d-%d-%d-%d-%d.dmp", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, std::rand());
  33. #endif
  34.  
  35. HANDLE hFile = ::CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  36.  
  37. if (hFile != INVALID_HANDLE_VALUE)
  38. {
  39. MINIDUMP_EXCEPTION_INFORMATION ExInfo;
  40. ExInfo.ThreadId = ::GetCurrentThreadId();
  41. ExInfo.ExceptionPointers = lpExceptionInfo;
  42. ExInfo.ClientPointers = false;
  43.  
  44. // write the dump
  45. #if !defined(FINALIDEALSEE)
  46. BOOL bOK = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpWithFullMemory, &ExInfo, NULL, NULL);
  47. #else
  48. BOOL bOK = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);
  49. #endif
  50. if (bOK)
  51. {
  52. printf("Create Dump File Success!\n");
  53. }
  54. else
  55. {
  56. printf("MiniDumpWriteDump Failed: %d\n", GetLastError());
  57. }
  58.  
  59. ::CloseHandle(hFile);
  60. }
  61. else
  62. {
  63. #if defined(UNICODE)
  64. wprintf(L"Create File %ls Failed %d\n", szFileName, GetLastError());
  65. #else
  66. printf("Create File %s Failed %d\n", szFileName, GetLastError());
  67. #endif
  68. }
  69. //禁用对话框提示信息//
  70. //FatalAppExit(-1, _T("Fatal Error, Check Dump File"));
  71.  
  72. return ret;
  73. }
  74.  
  75. static void InitMinDump()
  76. {
  77. SetUnhandledExceptionFilter(RunUnhandledFilter);
  78. }
  79. };

MiniDump产生工具的更多相关文章

  1. 【转】调试Release发布版程序的Crash错误

    http://www.cppblog.com/Walker/archive/2012/11/08/146153.html http://blog.sina.com.cn/s/blog_48f93b53 ...

  2. 调试Release发布版程序的Crash错误

    http://www.cppblog.com/Walker/archive/2012/11/08/146153.html http://blog.sina.com.cn/s/blog_48f93b53 ...

  3. 调试Release发布版程序的Crash错误(转)

    http://blog.sina.com.cn/s/blog_48f93b530100fsln.html 在Windows平台下用C++开发应用程序,最不想见到的情况恐怕就是程序崩溃,而要想解决引起问 ...

  4. 蓝瓶的钙,好喝的钙——windows,我要蓝屏的

    原文地址:http://80x86.io/post/windows-blue-screen-0x00000050-page_fault_in_nonpaged_area 这里只截取一部分. windo ...

  5. Dump文件定制工具---MiniDump Wizard

    MiniDump向导应用程序允许在不编写代码的情况下尝试MiniDumpWriteDump和MiniDumpCallback函数.可以指定将传递给MiniDumpWriteDump函数的MINIDUM ...

  6. [IT学习]关于minidump

    windows debug里面需要用到数据分析. 很重要的一个工具就是dump. 什么事minidump,就是windows在蓝屏或其他故障时,转存的内存数据.(我现在是这么理解的) Applicat ...

  7. 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载

    我们常常在使用电脑中,有时会碰到电脑蓝屏,我们经常束手无策,不知道为什么会蓝屏?有些蓝屏后自动重启能正常进入系统,那么我们就可以借助工具进行分析.而有些可能需要进入到安全模式或者pe系统才会正常,那么 ...

  8. minidump详细介绍

    Effective minidump 简介 在过去几年里,崩溃转储(crash dump)成为了调试工作的一个重要部分.如果软件在客户现场或者测试实验室发生故障,最有价值的解决方式是能够创建一个故障瞬 ...

  9. 如何生成转储(dmp)文件--工具篇

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

随机推荐

  1. 设计Popup Window

    设计一个Popup window, 在其中实现分享到Facebook 和Twitter 功能. popup window 名称为 ShareView.xaml, 代码如下: <phone:Pho ...

  2. win+linux双系统安装笔记

    1.出现win与linux只能引导之一启动,此时启动linux并更改启动文件可以用linux自带的grub2引导启动 2.ubuntu64位安装时需要联网,因为其有bug,镜像文件中缺少gurb2,需 ...

  3. 【opencv基础】测量运行时间的函数getTickCount/getCPUTickCount/getTickFrequency

    函数的计算结果类型是double,单位是秒. 要使用更精确的计时,就需要使用getCPUTickCount(),不过现代计算机CPU的频率会随着负载而变化所以没大有必要使用该函数,可以参看函数的介绍[ ...

  4. MAC 设置环境变量path的常用方法

    单个用户设置 1)~/.bash_profile (任意一个文件中添加用户级环境变量) (注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile) 若bash shell是 ...

  5. CentOS LAMP环境 配置详解

    要想在linux上实现网页服务器(www)需要Apache这个服务器软件,不过Apache仅能提供最基本的静态网站数据而已,想要实现动态网站的话,最好还是要PHP与MySQL的支持,所以下面我们将会以 ...

  6. 《DSP using MATLAB》Problem 4.21

    快到龙抬头,居然下雪了,天空飘起了雪花,温度下降了近20°. 代码: %% -------------------------------------------------------------- ...

  7. js 时间操作积累

    console.log( new Date() ); //Tue Mar 20 2018 22:47:01 GMT+0800 (中国标准时间) // var date = new Date( '201 ...

  8. ruby hash 默认值的问题

    参考:http://stackoverflow.com/questions/16159370/ruby-hash-default-value-behavior 使用ruby hash 默认值为空数组, ...

  9. k8s helm 可视化UI 管理工具 monocular部署试用

    官方建议是用 helm 进行安装,但是helm 有点费事(各种原因...) 所以使用官方说的使用docker-compose 但是默认官方的compose 跑起来 还是真费事,经过调整,修改了一版支持 ...

  10. PHP com组件的使用 (环境搭建 以及测试)

    COM 组件在实际当前的软件开发中依然是比较重要,包括对于串口开发的人员,软件插件使用的人员,PHP 已经为我们添加了对于 COM的支持,可以很好的解决我们在开发中可能碰到的一些问题.一下是开发环境的 ...