文章目录

  • 1、示例
  • 分析步骤
    • 1、转储dmp文件
    • 2、使用WinDbg打开dmp文件
    • 3、!analyze -v

1、示例

这个只用作说明,因此代码简单

// TestDmp.cpp : Defines the entry point for the console application.
//#include "stdafx.h"typedef struct _TEST_INFO_
{CString strAlarm;int nCount;_TEST_INFO_(){strAlarm = L"";nCount = 0;}}TEST_INFO, *PTEST_INFO;int _tmain(int argc, _TCHAR* argv[])
{PTEST_INFO pTest = NULL;CString strAlarm = pTest->strAlarm;system("pause");return 0;
}

分析步骤

这里主要是讲不能调试的情况(毕竟示例这么简单,调试都可不用就看出问题)

1、转储dmp文件

在进程还没有退出的情况下,在任务管理器右键进程名——创建转储文件即可

2、使用WinDbg打开dmp文件

使用WinDbg打开1中保存的dmp文件,设置一下富豪路径和源代码路径(不设置也行,测试也是可以的)

3、!analyze -v

如果出现以下问题:

执行以下命令切换为32位模式:

0:000:x86> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
********************************************************************************** The OS name list needs to be updated! Unknown Windows version: 10.0 ***
GetUrlPageData2 (WinHttp) failed: 12002.FAULTING_IP:
+c40
00000000 ??              ???EXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000000ExceptionCode: 80000003 (Break instruction exception)ExceptionFlags: 00000000
NumberParameters: 0CONTEXT:  0000000000000000 -- (.cxr 0x0;r)
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000003 edi=00000003
eip=77db32fc esp=00fdeec0 ebp=00fdf050 iopl=0         nv up ei pl nz ac pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000216
ntdll_77d40000!NtWaitForMultipleObjects+0xc:
77db32fc c21400          ret     14hFAULTING_THREAD:  0000000000001cfcPROCESS_NAME:  TestDmp.exeERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION_CODE: (NTSTATUS) 0x80000003 (2147483651) - {NTGLOBALFLAG:  0APPLICATION_VERIFIER_FLAGS:  0APP:  testdmp.exeANALYSIS_VERSION: 6.3.9600.17237 (debuggers(dbg).140716-0327) amd64freBUGCHECK_STR:  APPLICATION_FAULT_STATUS_BREAKPOINT_ZEROED_STACKPRIMARY_PROBLEM_CLASS:  STATUS_BREAKPOINTDEFAULT_BUCKET_ID:  STATUS_BREAKPOINTLAST_CONTROL_TRANSFER:  from 0000000077bc7ef3 to 0000000077db32fcSTACK_TEXT:
00fdeebc 77bc7ef3 00000003 00fdf0f0 00000001 ntdll_77d40000!NtWaitForMultipleObjects+0xc
00fdf050 77bc7da8 00000003 00fdf0f0 00000000 KERNELBASE!WaitForMultipleObjectsEx+0x133
00fdf06c 77816967 00000003 00fdf0f0 00000000 KERNELBASE!WaitForMultipleObjects+0x18
00fdf118 77816598 00000000 00000000 00fdf20c kernel32!WerpReportFaultInternal+0x3b7
00fdf134 777ec299 00fdf1dc 77c7ce6b 00fdf20c kernel32!WerpReportFault+0x9d
00fdf13c 77c7ce6b 00fdf20c 00000001 20e385f0 kernel32!BasepReportFault+0x19
00fdf1dc 77de287e 00fdf20c 77db72f2 00fdf970 KERNELBASE!UnhandledExceptionFilter+0x29b
00fdf970 77da8774 ffffffff 77dca139 00000000 ntdll_77d40000!__RtlUserThreadStart+0x3a109
00fdf980 00000000 00bb161d 011da000 00000000 ntdll_77d40000!_RtlUserThreadStart+0x1bSTACK_COMMAND:  ~0s; .ecxr ; kbFOLLOWUP_IP:
ntdll_77d40000!NtWaitForMultipleObjects+c
77db32fc c21400          ret     14hSYMBOL_STACK_INDEX:  0SYMBOL_NAME:  ntdll!NtWaitForMultipleObjects+cFOLLOWUP_NAME:  MachineOwnerMODULE_NAME: ntdll_77d40000IMAGE_NAME:  ntdll.dllDEBUG_FLR_IMAGE_TIMESTAMP:  47d68d20FAILURE_BUCKET_ID:  STATUS_BREAKPOINT_80000003_ntdll.dll!NtWaitForMultipleObjectsBUCKET_ID:  APPLICATION_FAULT_STATUS_BREAKPOINT_ZEROED_STACK_ntdll!NtWaitForMultipleObjects+cANALYSIS_SOURCE:  UMFAILURE_ID_HASH_STRING:  um:status_breakpoint_80000003_ntdll.dll!ntwaitformultipleobjectsFAILURE_ID_HASH:  {ad4c05a5-d4e5-24d8-5d7e-ae3c60766b85}Followup: MachineOwner
---------

运行一下~0s; .ecxr ; kb

好像啥也没有~~~~~

这个时候怎么办呢?没办法了吗?当然不是啦,接下来我们可以找一下有没有 KERNELBASE!UnhandledExceptionFilter 这个调用(很明显,上面第7行就是,如果没有,就执行~*kbn看看吧)

运行一下dd 00fdf20c

在运行一下 .exr 00fdf34c

再运行一下 .cxr 00fdf39c

这个时候就会跳转到出错的地方了

执行一下kbn,这个时候我们就看到了出问题的行了

这个时候可以打开call stack窗口,双击TestDmp!wmain+0x19
行,或者输入.frame 3,之后打开locals窗口


可知,非法使用指针了。

windbg分析崩溃dmp没有可用信息的处理相关推荐

  1. windbg分析崩溃dmp

    首先我们收集了程序崩溃的dump文件,然后将dump文件拖拽到windbg下,然后依次如下命令: 1.设置符号路径:.sympath srv*C:\symbols*http://msdl.micros ...

  2. windows服务器dmp文件分析,如何用WinDbg分析MEMORY.DMP文件

    1. 我的电脑,属性->高级->启动,最下面的内存调试选最后一项的全部,确定后重新启动 2. 蓝屏后不要急着重启,系统会保存整个内存内容,然后会自动重启 3. 重启后,windows目录会 ...

  3. WinDbg分析dump文件

    调试能力可以说是最重要,尤其对于C/C++程序员而言,更是如此! 用神器WinDbg调试Dump文件需要三样东西: 1.毋庸置疑,肯定是Dump文件咯 2.源代码,必须与编译可执行文件时的代码一致 3 ...

  4. Windbg分析程序崩溃实践

    1. 项目场景 本故事纯属虚构. 初入职场的小木,负责维护一个博客系统,后端采用C++编写,部署在Windows服务器上.刚刚熟悉完产品的小木,接到了后台服务的报警,服务器后端偶尔会程序崩溃.刚开始小 ...

  5. C++接入CrashRpt并上报分析崩溃信息

    项目需要监测在Windows平台的崩溃情况,折腾了两天终于弄好了,记录一下. 1.捕获崩溃信息 接到这个需求,心想应用崩溃系统会收到信号,应该有相应的函数可以监听,上网搜索,果不其然函数 SetUnh ...

  6. 揪出“凶手”——实战WinDbg分析电脑蓝屏原因

    http://www.appinn.com/blue-screen-search-code/ 蓝屏代码查询器 – 找出蓝屏的元凶 11 文章标签: windows / 系统 / 蓝屏. 蓝屏代码查询器 ...

  7. Windbg分析dump及调试程序

    1. Windbg生成dump文件 程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件. 步骤: 1) 打 ...

  8. 使用 Windbg 分析一个 异步操作 引发的 Crash 异常

    上周我们收到了一个客户的紧急求助,他们的一个 iis应用程序池 经历了频繁重启,即使从错误日志中也不得到任何有用的信息,异常信息如下: System.NullReferenceException : ...

  9. Windbg分析高内存占用问题

    1. 问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声.为了缓解现场的情况, 客户都是手动回收IIS应用程序池才 ...

  10. 如何在分析崩溃的边缘分析问题

    如何在分析崩溃的边缘分析问题 当一个人处理多个任务,不考虑并发和并行,只是单线程处理任务时: 我,一个默默无闻的程序员,既没有给世界带来更加丰富多彩的体验,也没有给公司带来质一般的超越,我就是一个默默 ...

最新文章

  1. A Strange Bitcoin Transaction
  2. 开发日记-20190628 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 5
  3. 不重复,distinct
  4. 数据的预处理与特征构建(申请评分卡模型)
  5. grep 判断不是正则的_Shell—正则表达式(grep命令、sed工具)
  6. vue2.0-基于elementui换肤[自定义主题]
  7. 2018年华为数通技术大赛复赛拓扑题
  8. Softmax函数及其导数
  9. ailess给您介绍互联网黑帽seo技术
  10. 自动化测试之数据驱动测试
  11. 全国增值税发票查验平台验证码识别
  12. ESXi-6.7.0U3b nvme固态硬盘无法识别解决方法
  13. Maven 编译时缺少依赖,java: 程序包org.apache.http不存在
  14. 微旅游“领跑”小长假“清肺”
  15. 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...
  16. MSN协议分析以及Java实现MSN登陆
  17. 微信小程序-地图map使用,周边公交地铁查询
  18. 每天记录学习的新知识:开源代码是否可以商用在项目中?
  19. 【百套源码】HTML5期末大作业 - 各类网页作业源码合集
  20. 贝叶斯神经网络(系列)第一篇

热门文章

  1. 无论用手工处理还是用计算机进行处理,会计电算化试卷
  2. 导出 excel表格(数据、echarts图片)
  3. 国稻种芯绿色沃土计划 农业大健康-万祥军:对话化肥惹的祸?
  4. Flink 的功能模块有哪些?
  5. Google chrome浏览器快捷方式
  6. 支持向量机(SVM)理解以及在sklearn库中的简单应用
  7. 源码看JAVA【十】Short
  8. 计算机RRC是什么指令,srb0 srb1 srb2的区别_srb什么意思_srb1 RRC建立请求
  9. 例3.1 有人用温度计测量出用华氏法表示的温度,今要求把它转换为以摄氏法表示的温度。
  10. Admob设置Android设备为测试设备(2020年5月7日亲测有效)