在我几年的工作经历中,不断的跟各种各样的dump打着交道,但我并不认为这是一件枯燥乏味的事情,与之相反,我更愿意融入其中,把自己想象成侦探,dump就是我的案发现场,我需要在此之中找到线索,抓住dump背后真正的bug,这就是分析dump的乐趣!
所以,我想到免费为同行分析dump并且分享分析dump经验和乐趣,这样一方面可以一起提高业务水平,另一方面也能满足自己分析dump的兴趣。
如果你也对分析dump很有兴趣,我会很高兴与你通过邮件联系,分享其中的经验和乐趣。
如果你手头上有疑难的dump,我会很希望你能把dump通过邮箱发给我看看,作为对你的回报,我会尽一切努力找到bug所在。如果有幸能找到bug,我会给你回复一份详尽的分析报告。
另外关于分析dump有这么几点要说的:
第一,因为我不是什么类型dump都有能力分析的,一般情况下,我只分析Windows Native程序产生的dump,简单来说就是ASM/C/C++/DELPHI程序dump,dump可以是关于崩溃,资源泄露,性能相关的,可以是user dump也能是kernel dump。
第二,我对dump类型没有什么要求,无论是minidump还是fulldump都可以分析,只不过他会影响到分析结果,完整的dump理所当然更容易分析出一些线索了。
第三,对于PDB符号文件我也没有什么要求,可能你害怕符号文件会泄露源代码的一些信息,那么你不用发给我符号文件,但是和第二条一样,有符号文件会更容易找到bug的蛛丝马迹。
第四,我并不能保证对于所有的dump分析都能给出一个结果,因为分析dump不仅是考验分析能力和经验,也考验了对系统相关代码的理解,例如你抓到一个显卡驱动恢复超时的蓝屏dump(bugcheck:VIDEO_TDR_ERROR),那么,我确实无能为力,因为我对显卡驱动相关知识一无所知。
第五,分析dump是我的兴趣,但是我也不会因为分析dump去影响我正常的工作,所以我分析dump都是在下班之后(当然,除了公司的dump)。
第六,我对流氓软件,广告外挂,木马病毒这种恶意程序的dump毫无兴趣。
希望读了上面这些不会让你打消与我取得联系的想法:)
我的邮箱是:
DUMP分析工具:Windbg
常用的Windbg第三方扩展:
https://github.com/0cch/0cchext
常去的网站:
http://advdbg.org/default.aspx
http://www.codeproject.com/
http://stackoverflow.com/
http://www.osronline.com/cf.cfm?PageURL=showlists.cfm?list=WINDBG
Dump分析图书推荐:
《软件调试》
《Windows Internals》
《Advanced Windows Debugging》
《Inside Windows Debugging》
Dump分析常用Windbg命令:
符号服务器 (.symfix)
搜索 (s)
模块信息 (lmv 或者 !dlls)
硬件配置信息 (!sysinfo)
自动分析 (!analyze -v 或者 !analyze -v -hang for hangs)
关键区分析 (!cs -s -l -o 或者 !locks)
线程栈 (~*kv 或者 !uniqstack)
APC信息 (!apc)
DPC 信息(!dpcs)
线程的CPU时间消耗 (!runaway)
进程环境块 (!peb)
钩子相关 (!chkimg)
异常处理链 (!exchain)
堆信息 (!heap -s, !heap -s -v)
虚拟内存信息 (!vm)
内存池信息 (!poolused)
I/O (!irpfind)
…
…