首页 > 其他分享 >vc core dump文件

vc core dump文件

时间:2024-07-06 19:19:27浏览次数:9  
标签:case core vc FALSE dump break CALLBACK bRet TRUE

#include <Dbghelp.h>

extern int LocalAccessDBInit(LPCSTR strDBName,LPCSTR pszLocakBackDB);

void CreateMiniDump( EXCEPTION_POINTERS* pep ); 

BOOL CALLBACK MyMiniDumpCallback(
                                 PVOID                            pParam, 
                                 const PMINIDUMP_CALLBACK_INPUT   pInput, 
                                 PMINIDUMP_CALLBACK_OUTPUT        pOutput 
                                 ); 
///////////////////////////////////////////////////////////////////////////////
// Custom minidump callback 
//

BOOL CALLBACK MyMiniDumpCallback(
                                 PVOID                            pParam, 
                                 const PMINIDUMP_CALLBACK_INPUT   pInput, 
                                 PMINIDUMP_CALLBACK_OUTPUT        pOutput 
                                 ) 
{
    BOOL bRet = FALSE; 


    // Check parameters 

    if( pInput == 0 ) 
        return FALSE; 

    if( pOutput == 0 ) 
        return FALSE; 


    // Process the callbacks 

    switch( pInput->CallbackType ) 
    {
    case IncludeModuleCallback: 
        {
            // Include the module into the dump 
            bRet = TRUE; 
        }
        break; 

    case IncludeThreadCallback: 
        {
            // Include the thread into the dump 
            bRet = TRUE; 
        }
        break; 

    case ModuleCallback: 
        {
            // Does the module have ModuleReferencedByMemory flag set ? 

            if( !(pOutput->ModuleWriteFlags & ModuleReferencedByMemory) ) 
            {
                // No, it does not - exclude it 

                wprintf( L"Excluding module: %s \n", pInput->Module.FullPath ); 

                pOutput->ModuleWriteFlags &= (~ModuleWriteModule); 
            }

            bRet = TRUE; 
        }
        break; 

    case ThreadCallback: 
        {
            // Include all thread information into the minidump 
            bRet = TRUE;  
        }
        break; 

    case ThreadExCallback: 
        {
            // Include this information 
            bRet = TRUE;  
        }
        break; 

    case MemoryCallback: 
        {
            // We do not include any information here -> return FALSE 
            bRet = FALSE; 
        }
        break; 

    case CancelCallback: 
        break; 
    }

    return bRet; 

}


void CreateMiniDump( EXCEPTION_POINTERS* pep ) 
{
    // Open the file 

    HANDLE hFile = CreateFile( ("wth__MiniDump.dmp"), GENERIC_READ | GENERIC_WRITE, 
        0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); 

    if( ( hFile != NULL ) && ( hFile != INVALID_HANDLE_VALUE ) ) 
    {
        // Create the minidump 

        MINIDUMP_EXCEPTION_INFORMATION mdei; 

        mdei.ThreadId           = GetCurrentThreadId(); 
        mdei.ExceptionPointers  = pep; 
        mdei.ClientPointers     = FALSE; 

        MINIDUMP_CALLBACK_INFORMATION mci; 

        mci.CallbackRoutine     = (MINIDUMP_CALLBACK_ROUTINE)MyMiniDumpCallback; 
        mci.CallbackParam       = 0; 

        MINIDUMP_TYPE mdt       = (MINIDUMP_TYPE)(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory); 

        BOOL rv = MiniDumpWriteDump( GetCurrentProcess(), GetCurrentProcessId(), 
            hFile, mdt, (pep != 0) ? &mdei : 0, 0, &mci ); 

        if( !rv ) 
            ShowLog(0, 0, "MiniDumpWriteDump failed. Error: %u \n", GetLastError());
        else 
            ShowLog(0, 0, "Minidump created.");

        // Close the file 

        CloseHandle( hFile ); 

    }
    else 
    {
        ShowLog(0, 0, "CreateFile failed. Error: %u \n", GetLastError());
    }

}

 

        int t = -10;
         __try
        {
            t = check_device_inform_param(handle, strSendData, len, pCallBack, dwUser);  
        }
        __except(CreateMiniDump(GetExceptionInformation()), EXCEPTION_EXECUTE_HANDLER)
        {

        }

 

    *(int*)123=456;
    int a[1];
    a[2]=3;
   

 

标签:case,core,vc,FALSE,dump,break,CALLBACK,bRet,TRUE
From: https://www.cnblogs.com/cnchengv/p/18287623

相关文章

  • Manticore Search初识
    目录参考文献ManticoreSearch是什么ManticoreSearch和Elasticsearch的区别参考文献ManticoreSearch号称Elasticsearch快15倍得全文检索引擎Manticore:afasteralternativetoElasticsearchinC++witha21-yearhistorymanticore官方17亿次纽约出租车测......
  • 让我彻底沉迷的设计神器CorelDRAW2024中文版本发布啦!
    ......
  • CDR2024永久免激活版下载附带CorelDRAW软件序列号激活码
    在设计领域,CorelDRAW一直以其强大的功能和易用性受到设计师们的喜爱。而随着移动设备的普及,许多人都期待着能在安卓设备上也能使用这一软件。但是,众所周知,由于版权等问题,官方并没有直接推出安卓版。这就让许多用户开始寻找其他途径,比如破解版。1、在本站下载并解压,禁用网络连......
  • 摸鱼大数据——Spark Core——缓存和checkpoint
    1、RDD的缓存当RDD被重复使用,或者计算该RDD比较容易出错,而且需要消耗比较多的资源和时间的时候,我们就可以将该RDD缓存起来。​主要作用:提升Spark程序的计算效率注意事项:RDD的缓存可以存储在内存或者是磁盘上,甚至可以存储在Executor进程的堆外内存中。主要是放在内存......
  • 摸鱼大数据——Spark Core——Spark内核调度
    1、内容概述Spark内核调度的任务:如何构建DAG执行流程图如何划分Stage阶段Driver底层是如何运转确定需要构建多少分区(线程)Spark内核调度的目的:尽可能用最少的资源高效地完成任务计算2、RDD的依赖RDD依赖:一个RDD的形成可能是由一个或者多个RDD得到的,此时这个RDD和......
  • vue3【提效】使用 VueUse 高效开发(工具库 @vueuse/core + 新增的组件库 @vueuse/compo
    Vueuse是一个功能强大的Vue.js生态系统工具库,提供了可重用的组件和函数,帮助开发者更轻松地构建复杂的应用程序。官网:https://vueuse.org/core/useWindowScroll/安装VueUsenpmi@vueuse/core@vueuse/components(可选)安装自动导入,添加到imports中//需......
  • SpringMVC 的工作流程和详细解释
    SpringMVC(Model-View-Controller)框架是基于经典的MVC设计模式构建的,用于开发Web应用程序。下面是SpringBootMVC的工作流程和详细解释:1.客户端发起请求1.客户端(通常是浏览器)发起HTTP请求到服务器,请求特定的URL资源。2.DispatcherServlet接收请求Dispa......
  • SpringMVC基础详解
    文章目录一、SpringMVC简介1、什么是MVC2、MVC架构模式与三层模型的区别3、什么是SpringMVC二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、执行Controller三、RequestMapping注解1、value属性1.1、基础使用1.2、Ant风格(模糊匹配路径)1.......
  • 记一次aspnetcore发布部署流程初次使用k8s
    主题:aspnetcorewebapi项目,提交到gitlab,通过jenkins(gitlab的ci/cd)编译、发布、推送到k8s。关于gitlab、jenkins、k8s安装,都是使用docker启动服务。首先新建一个项目,为了方便浏览就把swaggerr非开发环境不展示去掉 下面就是需要准备Dockerfile和k8s.yaml文件,这里不应该用......
  • [Mysql]MVCC
    多版本并发控制MVCCMySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的实现标准。可以......