在项目的属性页,“配置属性”/“链接器”/“系统”中“子系统”选择“Windows(/SUBSYSTEM:WINDOWS)原先为“控制台(/SUBSYSTEM:CONSOLE)”
在“高级”选项中添加“入口点”,手工编辑输入mainCRTStartup。。
//添加DUMP文件生成
#ifdef WIN32
#include "DbgHelp.h"
#include <windows.h>
#pragma comment( lib, "dbghelp")
#endif // WIN32
long __stdcall callback_func(_EXCEPTION_POINTERS* excp)
{
HANDLE hFile = ::CreateFile( _T(".\\Rstp_Server_Dumpfile.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if( hFile != INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION einfo;
einfo.ThreadId = ::GetCurrentThreadId();
einfo.ExceptionPointers = excp;
einfo.ClientPointers = FALSE;
::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, MiniDumpNormal, &einfo, NULL, NULL);
::CloseHandle(hFile);
}
return EXCEPTION_EXECUTE_HANDLER;
}
int main(int argc, char** argv) {
#ifdef WIN32
//添加DUMP,程序崩溃时调试用
SetUnhandledExceptionFilter(callback_func);
#endif // WIN32
调整程序启动方式与生成崩溃转储文件
本文介绍如何将程序从控制台模式转换为Windows模式,并在程序崩溃时生成转储文件进行调试,同时提供了DUMP文件生成的相关代码实现。
246

被折叠的 条评论
为什么被折叠?



