真实开发过程中会遇到这种情况,程序在自己的电脑上运行的很好,但是交付之后就会经常莫名其妙的 关闭
通常的做法是 给运行的程序 加上 try catch ,分析catch到的log来分析,这对于java来说是非常好的方法
printStackTrace() 不仅可以打印 错误类型,还可以打印错误堆栈,这是依赖于jvm虚拟机的
但是 C++ 的异常处理 如果显示堆栈的话比较麻烦,网上这种代码很多 ,在这里我们说另外一种方式 : 内存转储文件
内存转储就是在程序运行崩溃的时候把 内存的信息打印到 一个文件中,通过对这个文件的分析来 来调试程序
一个完整的代码例子:
#include <iostream>
#include <string>
#include <Windows.h>
#include <DbgHelp.h>
using namespace std;
void CreateDumpFile(LPCSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException) ;
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException);
void CreateDumpFile(LPCSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException)
{
// 创建Dump文件
//
HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
// Dump信息
//