vc/vs开发的应用程序添加dump崩溃日志
2017-09-19 14:47
447 查看
vc/vs开发的应用程序出现崩溃的时候,由于没有任何记录,导致开发人员很难追踪,但是添加dump文件后,就可以免除这些烦恼
1.添加方法
(1)添加头文件
#include <imagehlp.h>
#pragma comment(lib, "DbgHelp.lib")
(2)在InitInstance()函数中添加:
//抓捕异常文件
::SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ExceptionCrashHandler); //cash代码
其中ExceptionCrashHandler是自自己添加的回调函数,代码如下:
//抓捕异常信息
LONG ExceptionCrashHandler(EXCEPTION_POINTERS *pException)
{
// 创建Dump文件
HANDLE hDumpFile = CreateFileW(L"Exception.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
// Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
// 写入Dump文件内容
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
CloseHandle(hDumpFile);
return EXCEPTION_EXECUTE_HANDLER;
}
崩溃时会在exe所在目录生成Exception.dmp文件
2.调试方法
调试时需要的文件包括:exe文件,dump文件,还有编译生成对应exe的pdb文件(这就需要提前保存好对应版本的pdb文件,否则提示pdb文件不匹配),保证它们在同一目录下,用vs2010打开dump文件(安装了vs2010的双击dump即可自动打开),按下图操作即可
对于dll等,进行同样操作即可
1.添加方法
(1)添加头文件
#include <imagehlp.h>
#pragma comment(lib, "DbgHelp.lib")
(2)在InitInstance()函数中添加:
//抓捕异常文件
::SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ExceptionCrashHandler); //cash代码
其中ExceptionCrashHandler是自自己添加的回调函数,代码如下:
//抓捕异常信息
LONG ExceptionCrashHandler(EXCEPTION_POINTERS *pException)
{
// 创建Dump文件
HANDLE hDumpFile = CreateFileW(L"Exception.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
// Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
// 写入Dump文件内容
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
CloseHandle(hDumpFile);
return EXCEPTION_EXECUTE_HANDLER;
}
崩溃时会在exe所在目录生成Exception.dmp文件
2.调试方法
调试时需要的文件包括:exe文件,dump文件,还有编译生成对应exe的pdb文件(这就需要提前保存好对应版本的pdb文件,否则提示pdb文件不匹配),保证它们在同一目录下,用vs2010打开dump文件(安装了vs2010的双击dump即可自动打开),按下图操作即可
对于dll等,进行同样操作即可
相关文章推荐
- 如何在VC中使用ADO开发数据库应用程序
- 网站开发中/Web 应用程序中 在VS.NET 2003 中打包部署水晶报表
- 在VC或是VS中添加快捷键
- VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)
- VS2013 自动添加头部注释 -C#开发
- 用VC 开发基于ORACLE数据库应用程序的两种方法
- VS 2010 WebSite网站 使用CodeBehide 方式开发[Web应用程序项目转Web网站]
- VS中用C#开发应用程序的调试入门、技巧和实例(转载)
- WP7开发中将数 4000 据库添加进应用程序中进行查询使用
- 使用qt开发应用程序时,选择vs还是qtcreator?选择string还是qstring?
- 用VC++开发Oracle数据库应用程序详解2
- 64位c/c++应用程序开发教程(以vc为例)(一)
- 使用VS Code开发Angular 2应用程序所需配置文件的解析
- VS开发】如何给console控制台程序更换应用程序图标
- vs的2010版本vc不能直接添加web引用了
- 在VC中使用ADO开发数据库应用程序
- 在VC中使用ADO开发数据库应用程序
- 网站开发中/Web 应用程序中 在VS.NET 2003 中打包部署水晶报表
- ArcEngine+VC6二次开发之添加MapControl控件封装应用类
- C#Windows应用程序开发之添加菜单