关于“程序闪退,没有生成DUMP文件”的一点总结

本文总结了程序在运行时闪退且未生成DUMP文件的情况。通过研究发现,SetUnhandledExceptionFilter无法捕获某些CRT函数的异常。通过在Main函数中添加特定代码,可以解决DUMP文件未生成的问题。然而,直接使用某博主的代码会导致程序死掉,正确做法是了解并应用SetUnhandledExceptionFilter函数的屏蔽原理。经过调整,现在程序在遇到异常时能成功生成DUMP文件。
摘要由CSDN通过智能技术生成

今早一回到公司,测试的同事就反映,昨晚程序运行一段时间后闪退了。。。。闪退???额,好吧,幸好我有加写DUMP的代码,示例如下:

LONG WINAPI UnhandledExceptionFunction(_EXCEPTION_POINTERS* pExceptionInfo)
{
    SYSTEMTIME st;
    GetLocalTime(&st);

    CString time_now = _T("");
    time_now.Format(_T("%04d_%02d_%02d_%02d_%02d_%03d.dmp"), st.wYear, st.wMonth, st.wDay,
        st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
    CString dump_file_path = GetRootPath();            //获取程序所在的文件夹的路径
    dump_file_path += _T("dump/");
    CreateDirectory(dump_file_path, NULL);
    dump_file_path += time_now;

    HANDLE hDumpFile = CreateFile(dump_file_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
    dumpInfo.ExceptionPointers = pExceptionInfo;
    dumpInfo.ThreadId = GetCurr
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值