调试技术:生成DMP文件
来源:互联网 发布:java二叉树非递归遍历 编辑:程序博客网 时间:2024/05/29 16:05
通过本文你可以知道如何生成DMP文件、相关知识的详解连接、和知识来源连接
最近对查崩溃相关的技术感兴趣,于是在网上搜索学习了下。
优秀文章有 <<让程序在崩溃时体面的退出>>系列,这里推荐下:http://blog.csdn.net/starlee/article/details/6618849。
看完了想系统的学习下,原来是MS在XP发布的时候推出的一套调试技术。全文已经收录在MSDN里了:Debugging and Error Handling。目前还没看完。
以下是生成DMP文件最重要的函数详解 <<Effective minidump>>
http://blog.csdn.net/pkrobbie/article/details/6641081
http://blog.csdn.net/pkrobbie/article/details/6636310
这里我想用最简洁的步骤给出DMP文件的生成方法:
#include <windows.h>#include <dbghelp.h>#pragma comment(lib,"dbghelp.lib")void dump(){ HMODULE hDbgHelpDll; hDbgHelpDll = LoadLibrary("dbghelp.dll"); if( hDbgHelpDll != INVALID_HANDLE_VALUE) { typedef BOOL (CALLBACK* tMiniDumpWriteDump)( HANDLE,DWORD,HANDLE,MINIDUMP_TYPE,PMINIDUMP_EXCEPTION_INFORMATION,PMINIDUMP_USER_STREAM_INFORMATION,PMINIDUMP_CALLBACK_INFORMATION ); tMiniDumpWriteDump pMiniDumpWriteDump = (tMiniDumpWriteDump)GetProcAddress(hDbgHelpDll,"MiniDumpWriteDump");handle xx = cratefile('xxx.dmp', g_wr,f_s_r,0,c_a,F_f_w_t,0);M_EXCEPION_INFOMATION eInfo;eInfo.ThreadId = getCurTid();e.ExP = Null;eInfo.Clptr = false;MINIDUMP_CB_INFO cb;cb.C = 0;cb.cp = 0;pMiniDumpWirteDump( getCurposs(), getCurpid(), xx, MiniDumpNormal, null? &eInfo : NULL, NULL, &cb);closeHandle(xx);}freeLibrary(hDbgHelpDll) }}
这个函数在被调用时生成一个DMP文件. 其中包含了调用栈和一些其他信息.
配合Structure Exception Handling技术,即可实现 "让程序在崩溃时体面的退出" 系列文章中描述的效果.
知道的越多,越觉得自己不知道的太多.这些技术可能在2002年以前就被使用了,我今天才了解,真是应该倍加努力.
- 调试技术:生成DMP文件
- C++程序崩溃时,生成dmp调试文件
- windbg调试dmp文件
- windbg调试dmp文件
- WinDbg 调试dmp文件
- VS2005调试dmp文件常见问题
- win32下生成dmp文件
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- DMP文件的生成和使用
- minidump-DMP文件的生成和使用
- windows 程序崩溃生成dmp文件
- 单片机机器周期的计算
- rman 备份与删除归档脚本
- Ajax 和 JavaScript 验证用户登录
- ashx文件中折叠收起代码
- Android中实现滑动翻页—使用ViewFlipper
- 调试技术:生成DMP文件
- S3c2410 LINUX下如何访问IO端口
- Linux进程地址空间分析
- JavaDoc标记(Java文本标记)定义
- js隔行换色
- 英特尔继续“炒冷饭”:Ultrabook前景堪忧
- Java面向对象程序设计中很重要的一些东西
- 江南乡村春节见闻
- PHP开发者常犯的10个MySQL错误