美文网首页
正确的保存32位dump

正确的保存32位dump

作者: 睡在床板下 | 来源:发表于2019-05-06 14:25 被阅读0次

    windows进程分为32位版本和64位版本。保存32位dump有如下几种方式

    通过任务管理器

    通过任务管理器–>”创建转储文件” 。
    保存方式为fulldump,方法比较简单。 缺点是如果在64位系统下保存32位进程则会变为64位dump,那么windbg打开时默认是64位dump,需要进行切换;
    同时某些系统命令无法解析,还有可能解析显示不正确。
    所以,不推荐这个方法。

    通过ntsd进行命令行保存

    ntsd在windows xp系统之后就不再是windows自带程序了,需要额外下载。将32位的ntsd.exe 放置在系统目录下,然后通过命令

    ntsd -pv -p PID -c “.dump /f d:\aaa.dmp ;q ” (不关闭原始进程) ntsd -pPID -c “.dump /f d:\aaa.dmp ;q ” (关闭原始进程)
    这个方法的好处是,在64位系统下正确保存了32位dump,windbg的任何命令和分析都是正确的。

    api自动保存dump

    通过 SetUnhandledExceptionFilter 函数实现自定义异常捕获函数,但出现异常时,自动保存dump。
    保存minidump :

     (void)MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL);
    
    

    保存fulldump:

    (void)MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, (MINIDUMP_TYPE)0x9b67, &ExInfo, NULL, NULL);
    
    

    关于如何通过程序自动保存dump后续讲解

    相关文章

      网友评论

          本文标题:正确的保存32位dump

          本文链接:https://www.haomeiwen.com/subject/qqwroqtx.html