Newer
Older
CasicBioRecNew / main.cpp
#include "CasicBioRecWin.h"

#include <QApplication>
#include <Windows.h> //闪退调试
#include <DbgHelp.h> //闪退调试

//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库


//程式异常捕获
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
    //创建 Dump 文件
    HANDLE hDumpFile = CreateFile(L"d://crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hDumpFile != INVALID_HANDLE_VALUE)
    {
    //Dump信息
    MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
    dumpInfo.ExceptionPointers = pException;
    dumpInfo.ThreadId = GetCurrentThreadId();
    dumpInfo.ClientPointers = TRUE;

    //写入Dump文件内容
    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
    }

    return EXCEPTION_EXECUTE_HANDLER;
}

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("Qt5Input"));

    QApplication a(argc, argv);

    //设置异常拦截
    SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数

    // Load conf setting
    //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf");
    //el::Loggers::reconfigureAllLoggers(conf);

    // Fatal level do not stop program
    //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);

    // Init Verbose level
    //el::Loggers::setVerboseLevel(9);

    CasicBioRecWin w;
    w.show();
    return a.exec();
}