首先,谢谢 Robert Kuster 为我们提供了这么好的CrashMe项目. 
很多人想寻找一个CrashMe分析的教程, 我也想要, 但是似乎网络里没有, 所以我就决定用业余时间写一个小系列来共享我在故障排除以及debug上面的经验和所知,希望这个系列教程可以帮助你更好的研究项目、软件故障排除领域。 
关于怎么抓dump的教程文章很多,所以我在这里也就不多提那方面的东西了,如果你需要抓dump方面的教程,可以参考下这篇文章

系统: Windows 7 x64 
我们开始吧! 
1. 双击打开执行CrashMe.exe, 然后点击按钮"BreakPoint", 我们将会看到这样的画面

在把注意力放到dump分析上之前,我们可以像这样收集故障排除工作所需的信息资源。

现在我们开始抓dump来分析问题的根本原因。

adplus -crash -o G:\FreeZone\MSDN\Debug\CrashMe\release -sc CrashMe.exe 
[你也可以直接用WinDbg载入并执行此程序,然后直接抓dump, 或者当进程崩溃时也可以使用x86的任务管理器去转储内存信息。] 
请不要着急打开WinDbg, 注意看adplus的输出,它已经自动分析出了一些有用的信息: 
ADPlus_log_23b4_2012-06-19_21-11-37-882.log

我们可以发现这个调用栈告诉我们了根本问题时出在CrashMe!CCrashMeDlg::OnBnClicked_ExecuteBreakPoint方法调用了KERNELBASE!DebugBreak API才使用进程崩掉。

现在我们来启动WinDbg(x86)加载分析dmp: 
我们需要将我们的私有调试符号文件的路径配置到WinDbg里,或者配置到系统的环境变量中。

有时,你会发现类似于调试目标没有连接上的信息在WinDbg底部,不用担心它,它那是正在加载你的dump文件内容,等一会就好了。

我们可以看到这里给出了与adplus log同样的分析结果。 
接下来我们尝试下!analyze -v命令: 
如果你发现CrashMe.exe的方法名不能显示在WinDbg下,尝试下重新载入符号文件命令: ld * or .reload /f

它给出了同样于adplus log的调用栈描述信息。 
当我们成功配置好符号文件时,它还可以告诉我们问题出在哪一行源代码上面。然后我们就可以打开源代码文件在WinDbg提示的位置进行检查并修改。 
现在看来第一次“crash”不需要太多的研究了,问题的原因已经很明显出来了。

在博主的英文博客里此系列教程以告一段落了,总共写了16篇,过后几天博主会陆续将教程内容用中文重述在此中文博客中供没有VPN连接国外网站的朋友们学习研究。

如果你有VPN的话,可以直接访问博主的英文博客,因为有很多文章用英文写完之后没时间就没翻译到此中文博客中。

http://mikedoszhang.blogspot.com/

看雪帖子连接: http://bbs.pediy.com/showthread.php?p=1089206#post1089206

英文博客: http://mikedoszhang.blogspot.com/2012/06/crashme-analysis-tutorial-1-breakpoint.html

CrashMe分析教程1 - BreakPoint的更多相关文章

  1. .Net程序员自学dump分析教程

    文章:.Net程序员自学dump分析教程 可以分析内存状态.

  2. WinDbg 蓝屏dump分析教程

    一.WinDbg是什么?它能做什么? WinDbg是在windows平台下,强大的用户态和内核态调试工具.它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏.程序崩溃(IE崩溃)原因,是我们日常 ...

  3. 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载

    我们常常在使用电脑中,有时会碰到电脑蓝屏,我们经常束手无策,不知道为什么会蓝屏?有些蓝屏后自动重启能正常进入系统,那么我们就可以借助工具进行分析.而有些可能需要进入到安全模式或者pe系统才会正常,那么 ...

  4. Eclipse安装Mat工具分析教程

    一.关于Mat MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分析工 ...

  5. 使用LSV进行通视分析教程

    在LSV"分析"菜单栏中点击"通视分析" 在地面或者建筑物表面选择一点,然后鼠标移动到另一个位置点击结束,即可判断出两点间是否有障碍物,是否可见.通视分析结果显 ...

  6. ArcGIS学习推荐基础教程摘录

    ###########-------------------摘录一--------------------------########### ***************************** ...

  7. 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

    0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...

  8. [摘]Android逆向分析常用网站

    androidterm:   Android Terminal Emulator   http://code.google.com/p/androidterm/   droidbox:   Andro ...

  9. Linux ELF格式分析

    http://www.cnblogs.com/hzl6255/p/3312262.html ELF, Executable and Linking Format, 是一种用于可执行文件.目标文件.共享 ...

随机推荐

  1. Reactive Extensions

    Rx提供了一种新的组织和协调异步事件的方式,极大的简化了代码的编写.Rx最显著的特性是使用可观察集合(Observable Collection)来达到集成异步(composing asynchron ...

  2. 动画操作 (Applying Animations) ngAnimate12

    动画操作 (Applying Animations) ngAnimate step 12 1.切换目录 git checkout step-12 npm start 2.效果图 这里在点击右边的缩略图 ...

  3. Android仿微信气泡聊天界面设计

    微信的气泡聊天是仿iPhone自带短信而设计出来的,不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo,给大家分享一下!效果图如下: 气泡聊天最终要的是素材,要用到9.png文件的素材,这样气 ...

  4. 使用POI导出excel

    引言:对于excel的导出,首先是将数据写到WorkBook中,然后将book以流的形式写出即可,看代码: public void exportResultInfo(String fileName,S ...

  5. ASP.NET(支持 ASP.NET MVC)性能优化包 - combres 介绍

    项目地址:https://github.com/buunguyen/combres Overview Combres (previously hosted in CodePlex) helps you ...

  6. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

  7. 【转】jQuery each函数中的continue及break

    continue :return true; break :return false; 也可以利用return即可跳出jQuery 来源:http://bie.xiaowangge.info/brow ...

  8. Python Learing(二):Basic Image Processing 1

    <写在前面> Basic image processing 1: 0.(以简单的曲线图为例)对于生成的图自定义外观,使用子图,多个数据集,标题,标签,交互式标注,图例: 1.生成散点图,直 ...

  9. 关于grub的那些事(二)

    上回说到/etc/default/grub文件,我直接抄了人家的文章,感觉那Wiki确实写的很详细,所以就用上拿来主义了. 这次是分析该文件,因为这是grub必读的文件,也记录着控制grub工作的环境 ...

  10. office文件的预览

    使用FlexPaper实现office文件的预览(C#版) 需求很简单,用户上传office文件(word.excel.ppt)后,可以预览上传的这些文件.搜索的相关的资料后.整理如下: Step1. ...