热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

minidump导致蓝屏,taskkill强制结束进程

因为release版本来就少了很多调试信息,更何况一般都是发布出去由用户使用,crash的现场很难保留和重现。目前有一些方法可以解决:崩溃地址+MAP文件;MAP文件;SetUnh


介绍部分来自https://www.cn blogs.com/Li suyun/p/5245609.html


程序的部分是原创的。


Minidump方式保留程序崩溃现场


在Windows平台上开发c上的APP应用程序时,您最不想看到的可能是程序崩溃,调试版本应该是最难的,以解决导致问题的错误。 release版本到来后,调试信息会变少,更何况是向公众开放供用户使用,因此很难在crash现场保存和再现。 目前有几种方法可以解决。 地址映射文件崩溃; 映射文件; setunhandledexceptionfilterminidump。 本文侧重于setunhandledexceptionfilterminidump方式。


一.生成Minidump文件


1、Minidump概念


小型存储转储(minidump )可以理解为一个dump文件,其中包含有助于调试crash的最少有用信息。 实际上,如果在系统属性-高级设置-启动和故障恢复-设置-写调试信息中选择“小内存转储(64 KB )”,则在系统意外停止时C:\Windows\Minidump\ 此文件是minidump文件


我们生成的是用户状态的minidump,文件中包含程序执行的模块信息、线程信息、堆栈调用信息等。 然后,dump文件被压缩,以符合该mini的特性。


2、生成minidump文件


使用drwtsn32、NTSD、CDB等调试工具生成Dump文件。 drwtsn32的缺点可以通过NTSD、CDB完全解决,但并不是所有操作系统都安装了NTSD、CDB等调试工具。 MiniDumpWriteDump接口允许程序自动生成Dump文件。 MiniDumpWriteDump是MS DbgHelp.dll中的API,用于导出当前正在运行的程序的dump。


3、自动生成Minidump文件


如果程序遇到未处理的异常(主要是指针以外的异常)而导致程序崩溃死亡,则在异常发生之前调用SetUnhandledExceptionFilter )函数时,异常将被处理为函数。 在MSDN中记述如下。


issuingsetunhandledexceptionfilterreplacestheexistingtop-levelexceptionfilterforallexistingandallfuturethreadsinthecalllingpration


因此,通过在程序的开头追加SetUnhandledExceptionFilter ()函数,并从函数中以适当的方法生成Dump文件,就能够实现所需的功能。


# include dbghelp.h # pragma comment (lib, 在' DbgHelp.lib ' )//main函数中调用setunhandledexceptionfiltersetunhandledexceptionfilition的longwinapidumpcallback (exception excp ) boost :3360 mutex 33603360 scoped _ locklock ) g _ dump _ m mutex创建dump (excp; 返回执行_执行_处理程序; } voidcreatedump (struct _ exception _ pointers * pexceptionpointers )//信息收集CStringW strBuild; str build.format (l ' build 3360 % s % s ',__DATE__,__TIME__ ); CStringW strError; whar * SZ modulename=l ' my _ module _ name '; strerror.format(L'%s%d,%d,%d.',s

zModuleName, pExceptionPointers->ExceptionRecord->ExceptionCode, pExceptionPointers->ExceptionRecord->ExceptionFlags, pExceptionPointers->ExceptionRecord->ExceptionAddress); //生成 mini crash dump BOOL bMiniDumpSuccessful; WCHAR* szPath = L"./"; WCHAR szFileName[MAX_PATH]; WCHAR* szAppName = L"DumpFile"; WCHAR* szVersion = L"v1.0"; DWORD dwBufferSize = MAX_PATH; HANDLE hDumpFile; SYSTEMTIME stLocalTime; MINIDUMP_EXCEPTION_INFORMATION ExpParam; GetLocalTime(&stLocalTime); //GetTempPathW(dwBufferSize, szPath); StringCchPrintfW(szFileName, MAX_PATH, L"%s%s", szPath, szAppName); CreateDirectoryW(szFileName, NULL); //std::wcout < 

 

 

 

二、调试Minidump文件

双击minidump文件(*.dmp)。默认会启动VisualStudio。菜单Tools/Options, Debugging/Symbols,增加PDB文件路径。注:如果minidump文件与pdb文件在同一目录,就不用设置这个了。若调试的程序需要微软基础库的PDB信息,可以增加一个路径为:http://msdl.microsoft.com/download/symbols在界面下方Cache Symbol From symbol…选择本地存储这些Symbols的路径。 注:如果本地已存储过微软基础库的pdb,就直接按照此步操作设置本地路径,不必执行上一步操作了。设置代码路径:刚打开的dmp工程,进入解决方案的属性。在这里输入源程序的代码路径。注:一定是sln所在的路径,而不是vcproj的路径!

                                            

          6. 按F5,debug吧。

 

 

 

 

 

 


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 阅读spring5源码DefaultSingletonBeanRegistry类遇到问题发现SpringBean中存在大量回调机制和aware接口,于是特意去了解 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
author-avatar
和雅竹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有