MFC程序自动生成dump Windbg文件
2009-12-16 14:30
537 查看
在客户机器上如何得到应该程序的详细出错信息, 这里使用drwtsn32,在应用程序崩溃的时候自动将调用栈的信息以文件形式保存在磁盘。
生成dump有drwtsn32, NTSD,CDB等多种工具,drwtsn32 于系统自带。
在项目中使用以下几个步骤:
1. 创建minidmp.h
GPTUnhandledExceptionFilter
#include "minidmp.h"
LONG WINAPI GPTUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo)
{
//得到当前时间
SYSTEMTIME st;
::GetLocalTime(&st);
//得到程序所在文件夹
TCHAR exeFullPath[256]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,256);//得到程序模块名称,全路径
CString strPath;
DWORD nLoc;
strPath.Format("%s",exeFullPath);
nLoc = strPath.ReverseFind('\\');
strPath.Delete(nLoc+1,strPath.GetLength()-nLoc);
LPSTR szFileName;
wsprintf(szFileName, TEXT("%sERLOG_%04d%02d%02d%02d%02d%02d%02d%02d.dmp"),strPath, st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, rand()%100);
CreateMiniDump(pExceptionInfo, szFileName);
std::cerr << "未知错误:" << (*pExceptionInfo->ExceptionRecord) << std::endl;
exit(pExceptionInfo->ExceptionRecord->ExceptionCode);
return EXCEPTION_EXECUTE_HANDLER; // 程序停止运行
}
3. 在异常发生之前调用SetUnhandledExceptionFilter(GPTUnhandledExceptionFilter); 通常在Main()函数开始时调用即可。
注:必需有dbghlp.dll
生成dump有drwtsn32, NTSD,CDB等多种工具,drwtsn32 于系统自带。
在项目中使用以下几个步骤:
1. 创建minidmp.h
GPTUnhandledExceptionFilter
#include "minidmp.h"
LONG WINAPI GPTUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo)
{
//得到当前时间
SYSTEMTIME st;
::GetLocalTime(&st);
//得到程序所在文件夹
TCHAR exeFullPath[256]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,256);//得到程序模块名称,全路径
CString strPath;
DWORD nLoc;
strPath.Format("%s",exeFullPath);
nLoc = strPath.ReverseFind('\\');
strPath.Delete(nLoc+1,strPath.GetLength()-nLoc);
LPSTR szFileName;
wsprintf(szFileName, TEXT("%sERLOG_%04d%02d%02d%02d%02d%02d%02d%02d.dmp"),strPath, st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, rand()%100);
CreateMiniDump(pExceptionInfo, szFileName);
std::cerr << "未知错误:" << (*pExceptionInfo->ExceptionRecord) << std::endl;
exit(pExceptionInfo->ExceptionRecord->ExceptionCode);
return EXCEPTION_EXECUTE_HANDLER; // 程序停止运行
}
3. 在异常发生之前调用SetUnhandledExceptionFilter(GPTUnhandledExceptionFilter); 通常在Main()函数开始时调用即可。
注:必需有dbghlp.dll
相关文章推荐
- MFC程序自动生成dump Windbg文件
- 程序自动生成Dump文件
- 程序自动生成Dump文件
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
- Eclipse下编写java程序突然不会自动生成R.java文件和包的解决办法
- eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
- c++程序编译后自动生成的文件有什么用
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
- 控制台程序 自动生成Google sitemaps地图文件
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
- WinDBG :生成Dump 文件(.dump 命令)
- [转]eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
- WinDBG生成Dump 文件
- C#调用MFC程序DLL库——MFC项目DLL生成问题、DLL引用链问题、DLL读取配置文件路径问题
- Python脚本生成的exe文件自动升级程序实现方法
- 程序崩溃时生成DUMP文件
- C# 程序自动批量生成 google maps 的KML文件
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
- 一个没有什么用的程序.自动替换文件内容,并生成复本.
- 学习使用AutoMake1.9的自动生成工程文件(二)——flat型程序编译实践过程