首先,谢谢 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. Oracle索引——位图索引

    1.语法create bitmap index index_name on 表名(字段);2.举个例子你就能明白了:如有表 test(id,name,address)数据(1,张三,大连)(2,李四, ...

  2. 关于如何惟一地标识一台Android设备的综合性讨论

    想必大家在开发Android项目的时候,多多少少会遇到“如何惟一地标识一台Android设备”等类似的问题.不只是以前,即使是现在乃至可以预见的将来,这个问题都将一直存在. 如果大家使用搜索工具搜索的 ...

  3. vs2012快速将项目托管到github

    vs2012快速将项目托管到github   在VS2012中使用GitHub 注册GitHub账号(DeanZhouLin) https://github.com/ 向GitHub中添加一个仓库(T ...

  4. Asp.net MVC4.0(net4.5) 部署到window server 2003上的解决方案

    Asp.net MVC4.0(net4.5) 部署到window server 2003上的解决方案 最近做了一个Web项目,也没多想就用了Asp.net MVC4.0 ,MVC4.0默认的目标fra ...

  5. Printk 标志优先级别

    #define KERN_EMERG                  "<0>"       /* 致命级:紧急事件消息,系统崩溃之前提示,表示系统不可用   */# ...

  6. [Usaco2007 Dec]Building Roads 修建道路[最小生成树]

    Description Farmer John最近得到了一些新的农场,他想新修一些道路使得他的所有农场可以经过原有的或是新修的道路互达(也就是说,从任一个农场都可以经过一些首尾相连道路到达剩下的所有农 ...

  7. 2013.2.A&&3.A

    半期考之后,磨磨蹭蹭的刷了两套长乐的模拟题[=-=我现在实在是不敢恭维自己的刷题速度]感觉貌似很久没有来这里喂食了,就顺便yy下题解好了 2013.2.A: ice :BFS和spfa都可以,我打了个 ...

  8. Bootstrap3.0(进度条、媒体对象、列表组、面板)

    Bootstrap3.0学习第十六轮(进度条.媒体对象.列表组.面板) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehy ...

  9. s​s​h​配​置​公​钥​和​私​钥​登​陆​S​e​c​u​r​e​C​R​T

    在用windows时管理linux服务器时,常会用到SecureCRT.Xshell以及开源的putty.在我工作环境大多都是采用密码认证的方式进行登录.今天对学习了些SecureCRT的密钥登录方式 ...

  10. SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...