分析一个dump file可以分解为4个步骤,第一步是信息收集,第二步是定位异常上下文,第三步分析和推理出现问题的原因,第四步分析和定位我们的源代码并进行修复和验证。 信息收集 我们可以使用一些命令浏览一下这个dump file对应的系统版本和一些模块的信息辅助我们后面的分析。 1. version命令,查看系统版本号 2. lm命令...
这篇文章我们接着分析上一篇的crash,在上一篇的文章中我们已经学会了如何在高度优化的release版本中分辨出正确的上下文地址,接下来我们继续查找程序奔溃的原因。首先打开dump文件,按照上一篇的步骤恢复到”第一案发现场“。定位异常上下文1. 通过了上一篇文章我们找到了真正的异常上下文,先看来看一下这个调用...
if (fnMiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, dumpFlags, &miniInfo, NULL, NULL)) { WCHAR buffer[MAX_PATH] = { 0 }; ::swprintf_s(buffer, _countof(buffer) - 1, L"Process has crashed.\nMinidump was saved to: \n\\%s\n", filePath); ::OutputDebu...
这个堆栈和寄存器的的值看起来太诡异了,这不禁让我们对上面的地址产生了怀疑! 6. 想想看,这个dump文件来自于Release版本的App,编译器会在生成release版的可执行文件中进行大量的优化,这种情况下的函数调用会最大程度地使用我们的寄存器来传递参数,而不是靠@esp+0x?来进行。想到了这里,让我们再次回到RtlDispatchExcep...
分析一个dump file可以分解为4个步骤,第一步是信息收集,第二步是定位异常上下文,第三步分析和推理出现问题的原因,第四步分析和定位我们的源代码并进行修复和验证。 信息收集 我们可以使用一些命令浏览一下这个dump file对应的系统版本和一些模块的信息辅助我们后面的分析。
可通过注册表设置生成相关的 dump 文件,以便进行调试。具体设置方法:在注册表中找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps。新建一个 DWORD 值DumpType,并将其值设置为 2,然后在 LocalDumps 中新建一个 Multi-String 值ExcludedApplications,将应用程序名称...
1、 要清楚,Dump文件是Windows启动的一个保险机制,而蓝屏主要是用做给系统争取时间进行收集Dump文件所用,所以一个逻辑是必然会有的,那就是如果蓝屏必然触发Dump机制,Dump机制会根据系统设置进行Mini或Full的收集。 2、 关于Dump文件的大小,如果Dump设置的存放位置不满足Dump文件大小也是不会产生Dump文件: ...
dmp dump debug visua 如何使用dump文件 我最近在开发一个windows下的程序(win7/win8),有一些case下会crash,如果在自己开发机器上调试比较简单:运行程序,然后vs attach到进程上即可,但是在每台QA的机器上安装vs时不现实的,因此我们要用到dump文件。 微软网站有一篇文章讲述如何创建dump文件: ...
1) 利用App Service自带Kudu的工具获取DUMP文件 登录进当前应用服务的kudu站点,入口URL为:https://<yoursitename>./ 选择Process Explorer找到您需要抓取的进程,如w3wp.exe 右键[Full Dump]即可,抓取后DUMP文件会自动下载到本地。 2) 对于.NET/.NET Core应用,使用procdump命令抓取指定的进程DUMP文...
1) 利用App Service自带Kudu的工具获取DUMP文件 登录进当前应用服务的kudu站点,入口URL为:https://<yoursitename>.scm.chinacloudsites.cn/ 选择Process Explorer找到您需要抓取的进程,如w3wp.exe 右键[Full Dump]即可,抓取后DUMP文件会自动下载到本地。