当前位置: 首页 > news >正文

西安模板建站公司游戏开发救世主

西安模板建站公司,游戏开发救世主,游戏开科技软件,自己制作头像的网站 设计 动漫1.1 DUMP文件类型 Windows下Dump文件分为两大类#xff0c;内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储#xff0c;最经典的就是系统蓝屏#xff0c;这时候会自动创建内核模式的Dump。用户模式Dump进一步可以分为完整Dump#xff08;Full Dump内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储最经典的就是系统蓝屏这时候会自动创建内核模式的Dump。用户模式Dump进一步可以分为完整DumpFull Dump和迷你DumpMinidump。完整Dump包含了某个进程完整的地址空间数据以及许多用于调试的信息而Minidump则有许多类型根据需要可以包含不同的信息有的可能只包含某个线程和部分模块的信息。 1.2 DUMP文件的创建 本节讲述几种常用的DUMP文件创建方法。这里只讲述用户模式Dump文件创建因为除部分专业开发人士驱动开发外一般的开发人员只涉及应用程序的调试。 方法1通过调试工具创建。调试工具如Visual StudioWindbg以及微软提供的ADplus都可以创建DUMP在Windbg中通过.dump命令来生成。 方法2通过任务管理器创建。打开任务管理器找到目标进程右键——“创建转储文件”即可保存DUMP。这种方式创建的DUMP文件为完整的Minidump缺乏灵活性。不过开发者的软件崩溃之后又没有提供自动措施时用户可以通过这种方法手动保存DUMP文件然后提供给开发者分析操作简单。不过这种方法所产生的DUMP文件与其它几种方法产生的有差异读者可以自己用windbg进行对比这一点我在后面会详细讲到。 方法3通过编程自动创建。这是软件开发者使用的方式例如WPS中可以看到的对话框 就是通过编程实现自动内存转储然后上传到服务器供开发者研究。 在编程过程中可以预期的异常都通过结构化异常try/catch进行了处理。此时如果发生了未预期的异常这些异常处理代码无法处理则转由Windows提供的默认异常处理器来进行处理这个特殊的异常处理函数为UnhandledExceptionFilter。该函数会显示一个消息框提示发生了未处理的异常同时让用户选择结束或调试该进程。也就是如下界面 因此为了更友好的处理未预期的异常主要是创建内存转储可以覆盖默认的异常处理操作。这是通过函数SetUnhandledExceptionFilter完成的函数原型如下 LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(_In_ LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter lpTopLevelExceptionFilter即异常处理函数指针如果设置为NULL则默认使用UnhandledExceptionFilter。因此我们对照UnhandledExceptionFilter的函数原型实现自己的异常处理函数 LONG WINAPI MyUnhandledExceptionFilter( struct _EXCEPTION_POINTERS *ExceptionInfo ) {AfxMessageBox(已成功创建崩溃转储);return EXCEPTION_EXECUTE_HANDLER; } 然后在程序中设置该函数 SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); 此时再运行示例如下 成功的接手了异常处理。接下来我们需要创建内存转储。这通过函数MiniDumpWriteDump来实现。加上内存转储功能之后的异常处理代码如下 LONG WINAPI MyUnhandledExceptionFilter( struct _EXCEPTION_POINTERS *ExceptionInfo ) {HANDLE hFile CreateFile(mini.dmp, GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if( hFile INVALID_HANDLE_VALUE )return EXCEPTION_EXECUTE_HANDLER;MINIDUMP_EXCEPTION_INFORMATION mdei;mdei.ThreadId GetCurrentThreadId();mdei.ExceptionPointers ExceptionInfo;mdei.ClientPointers NULL;MINIDUMP_CALLBACK_INFORMATION mci; mci.CallbackRoutine NULL; mci.CallbackParam 0; MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, mdei, NULL, mci); CloseHandle(hFile);AfxMessageBox(已成功创建崩溃转储);return EXCEPTION_EXECUTE_HANDLER; } 此时运行程序即可得到内存转储文件mini.dmp。需要注意的是栈溢出类型的异常使用这种方法一般是捕捉不到的。为什么我在栈溢出笔记中详细写过SEH栈溢出会破坏SEH结构化异常处理框架导致SEH失效。读者可以自己尝试。 1.3 小结 本节主要对DUMP文件进行了简单的介绍并展示了创建DUMP文件的几种途径其中通过编程实现的应该是开发者应该掌握的方法。这样不仅仅给用户提供了比较友好的崩溃提示还自动保存了DUMP文件这对于那些不易重现的Bug将大大提高调试效率。 本节的程序是一个简单的MFC程序具体见第2节
http://www.w-s-a.com/news/441976/

相关文章:

  • 虚拟币交易网站源码自己给网站做支付接口
  • 免费的seo网站在线 crm
  • 绍兴市高速公路建设指挥部网站网站主页和子页风格如何统一
  • 获取网站状态网站租金可以做办公费吗
  • 网站开发执行什么标准号wordpress主题 表白
  • 杭州网站推广与优化凡科网是免费的吗
  • 公司网站的重要性门户网站推广介绍方案
  • 做金融网站看那些素材江门网红打卡景点蓬江区
  • 饮食网站模板建网站中企动力优
  • 郑州 制造 网站东平企业建站公司
  • 天津设计师网站大全展示型网站搭建
  • 南宁网站建设 传导网站开发平台开发公司
  • 网站建设好处上海建设工程网站
  • 黑河哈尔滨网站建设太原网站制作定制开发
  • 建站做网站香河住房与建设局网站
  • 如何制造一个网站域名分类网站
  • 解析视频的网站怎么做凡科网快图
  • 企业网站优化问题接单app平台有哪些
  • 怎么做网站后缀识别符号才不会变什么是电子商务网站建设
  • 中山 五金 骏域网站建设专家专门用来制作网页的软件是什么
  • 怎么做刷东西的网站数据分析软件工具有哪些
  • 官方购物网站正品交易网站域名
  • lol网站建设seo 网站太小
  • 网站建设销售职责手机网站制作软件
  • 福州百度企业网站seo如何在电脑上登录wordpress
  • 开发区全力做好网站建设网络广告营销成功案例
  • 114网站建设高并发系统架构
  • php网站打开一片空白wordpress中文广告插件下载
  • 怎样建自己的网站免费的百度关键词排名点击
  • 医院网站建设的特点怎么查看网站百度快照