MFC程序显示控制台,崩溃转储代码

///

#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include  <dbghelp.h> 
#pragma comment(lib,  "dbghelp.lib")
//显示控制台
void InitConsoleWindow()
{
int nCrt = 0;
FILE* fp;
AllocConsole();
nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
fp = _fdopen(nCrt, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
}



SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);

//异常处理代码

//EXCEPTION_EXECUTE_HANDLER equ 1 表示我已经处理了异常,可以优雅地结束了 
//EXCEPTION_CONTINUE_SEARCH equ 0 表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束 
//EXCEPTION_CONTINUE_EXECUTION equ -1 表示错误已经被修复,请从异常发生处继续执行 
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo)
{
CString   strDumpFile; 
strDumpFile.Format("./%d",CTime::GetCurrentTime().GetTickCount());
strDumpFile   +=  ".dmp "; 
HANDLE   hFile   =   CreateFile(strDumpFile,   GENERIC_WRITE,   FILE_SHARE_WRITE,   NULL,   CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,   NULL   );


if   (hFile!=INVALID_HANDLE_VALUE)

MINIDUMP_EXCEPTION_INFORMATION   ExInfo; 


ExInfo.ThreadId   =   ::GetCurrentThreadId();
ExInfo.ExceptionPointers   =   ExceptionInfo;
ExInfo.ClientPointers   =   NULL;


//   write   the   dump
BOOL   bOK   =   MiniDumpWriteDump(GetCurrentProcess(),   GetCurrentProcessId(),   hFile,   MiniDumpNormal,  &ExInfo,   NULL,   NULL   );
CloseHandle(hFile); 



//theApp.PostThreadMessage(WM_QUIT,0,0);
return EXCEPTION_EXECUTE_HANDLER;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值