CrashMe分析教程1 - BreakPoint
首先,谢谢 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的更多相关文章
- .Net程序员自学dump分析教程
文章:.Net程序员自学dump分析教程 可以分析内存状态.
- WinDbg 蓝屏dump分析教程
一.WinDbg是什么?它能做什么? WinDbg是在windows平台下,强大的用户态和内核态调试工具.它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏.程序崩溃(IE崩溃)原因,是我们日常 ...
- 电脑蓝屏分析教程,附工具WinDbg(x86 x64)6.12.0002.633下载
我们常常在使用电脑中,有时会碰到电脑蓝屏,我们经常束手无策,不知道为什么会蓝屏?有些蓝屏后自动重启能正常进入系统,那么我们就可以借助工具进行分析.而有些可能需要进入到安全模式或者pe系统才会正常,那么 ...
- Eclipse安装Mat工具分析教程
一.关于Mat MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分析工 ...
- 使用LSV进行通视分析教程
在LSV"分析"菜单栏中点击"通视分析" 在地面或者建筑物表面选择一点,然后鼠标移动到另一个位置点击结束,即可判断出两点间是否有障碍物,是否可见.通视分析结果显 ...
- ArcGIS学习推荐基础教程摘录
###########-------------------摘录一--------------------------########### ***************************** ...
- 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序
0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...
- [摘]Android逆向分析常用网站
androidterm: Android Terminal Emulator http://code.google.com/p/androidterm/ droidbox: Andro ...
- Linux ELF格式分析
http://www.cnblogs.com/hzl6255/p/3312262.html ELF, Executable and Linking Format, 是一种用于可执行文件.目标文件.共享 ...
随机推荐
- Redmine(Ruby)配置经验
Redmine(Ruby)配置经验记录在配置Redmine邮件同步过程中遇到的各种问题与解决方法 1. 如何安装Redminehttp://www.redmine.org/projects/redmi ...
- Redis API与常用数据类型简介
Redis API与常用数据类型简介 一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些 ...
- MySql 集群配置
MYSQL CLUSTER方案介绍 本文的大致框架来自罗志威.黄川的报告, 在它的基础上进行简化和修改一些bug并且添加了主从复制的章节,最后做出该文档 MySQL Cluster 是MySQL适合于 ...
- ASP.NET WebApi 开放数据
概述 开放式数据协议(OData) 是用于在 web 数据访问协议.它提供统一的方式来构造数据. 查询的数据和操纵数据集通过 CRUD 操作.它支持 AtomPub (XML) 和 JSON 格式.它 ...
- vs2013使用初体验
刚安装好vs2013 , 初步体验了一把, 下面是我目前感受到的改变(对比vs2012) 1. 任务栏图标变了 (左边vs2013, 右边vs2012) 2. 开始界面 (vs2012有ligh ...
- [原]逆向iOS SDK -- _UIImageAtPath 的实现(SDK 6.1)
汇编代码: ; 状态:R0 = imageFileName, R1 = mainBundle, R2 = isRetina PUSH {R4-R7,LR} ; R0 = imageFileNam ...
- java并发之固定对象与实例
java并发之固定对象与实例 Immutable Objects An object is considered immutable if its state cannot change after ...
- C#操作Kentico cms
C#操作Kentico cms 中的 content(winform环境) 前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内 ...
- VS中为类,函数代码自动添加版权注释信息
以web项目为例: 一:给类加注释 1.在visual studio 的安装路径下 如:[盘符]:\Program files\Microsoft Visual Studio 8\Com ...
- 获取EditText的光标位置
editText.addTextChangedListener(new TextWatcher(){ @Override public void afterTextChanged(Ed ...