挖井

类库大魔王的挖井日记

挖一口属于自己的井


使用Windbg定位程序崩溃

  今天突发奇想,看到Edraw的一个软件包里有个CrashReport程序,觉得这个功能真是很值得放到自己的工程中去。想想大概原理就是使用dbghelp.dll库中的Debug API来实现,不过具体细节我是一点都不懂。记起以前在公司网上看到有人提到过FileZilla就有这样的功能,可以在程序崩溃的那一刻记下程序堆栈,函数调用栈,寄存器等有用信息。于是我马上找来FileZilla代码,运气也好,刚好找到2.x版本的,因为3.0以上版本的源代码包中是不带这部分代码了。这部分代码模块独立性做得相当好,只要把那几个文件抠出来加入自己的工程,几乎不用怎么修改就可以工作了。要做试验的话,可以来个除0错误,或者向空指针写入值,然后运行,就会弹出消息框,并生成2个文件,一个是文本格式的简要信息,另一个是二进制格式的core dump。又在公司网上找到一篇用Windbg分析core dump文件的简要介绍,马上拿来试试,还真是好用,设置好symbol目录和source目录,它能自动从网上下载缺少的symbol文件,并能自动打开源代码文件跳转到引起崩溃的那行代码上,真是太爽啦。以后再定位程序莫名崩溃问题,要方便简单多啦。

本文地址:

https://minidump.info/blog/2008/03/e4-bd-bf-e7-94-a8windbg-e5-ae-9a-e4-bd-8d-e7-a8-8b-e5-ba-8f-e5-b4-a9-e6-ba-83/

上一篇

使用CppUnit进行单元测试

  网上随便一搜就能找到一堆一堆的文章,讲述如何使用xUnit进行单元测试,虽然我这个标题也的是用CppUnit进行单元测试,但我不会重复一遍n多先辈们说过的话,因为即使说了,也肯定不如那些话来得精准、全面和专业。  今天花时间看到一下CppUnit自带的例子,结合以前在书上看到的,我意识到,...…

CPPOOPGPXP 全文阅读
下一篇

修改CruiseControl的配置

  在家无聊,看到CruiseControl里的东西就想整一下,一直以来只是抄袭了同事的脚本在这里跑,只能手动地去点击一下按钮才能激发,想着就不舒服。从网上搜了点资料看看,实在是找不到有用的,于是再回来看自带的帮助和自带的例子,偶然发现,虽然命令行中老是输出一堆一堆的内容,其实对于出错的情况还...…

CPPOOPGPXP 全文阅读