dump文件的调试
来源:互联网 发布:邮箱大师mac版本下载 编辑:程序博客网 时间:2024/05/01 21:13
这段时间突然发现,要一下做一个金刚不坏之身的程序是不太可能滴,至于对我来说吧。
这个程序也要经过千锤百炼才能够练就一个强大的自信心。
我现在做系统就不考虑一下把程序做的足够强壮了,因为我也做不到,现在做系统时,总考虑的一个问题:
当系统异常的时候怎么去处理?
我不怕系统程序出现异常,甚至直接Over,只要能在异常时处理异常后继续运作,在崩溃重启后能够继续把没
干的活给干了,那么这个在我能够承受的范围内,也在大多数客户的承受范围内,因为这样就是我们所说的将
损失减小到最低,其实是不是最低只有自己能够知道。
当然了,我更希望能够做出一个健壮无比的牛逼程序,所以我想知道程序是在什么情况下崩溃的,可是有些问题
你懂的,老在客户机器上或者生产环境下出现,却在自己的机器上和测试环境就他妈的不出现,遇见这种情况我是
跳楼或者杀人的心情都有了,偶尔我也犯过情绪,想提出辞职申请,换个行业去,告别这苦逼的程序员生涯,
可总不知道是什么力量支持着我,让我坚强依旧滴做着程序员,过着狗日的日子。
后来,不经意间,一位同事给我说了一个种在系统中异常或者崩溃的时候,来生成dump文件,然后用调试器来调试。
这样就可以在生产环境中的dmp文件,拷贝到自己的开发机器上,调试就可以找到错误的位置,配合程序调试符号pdb文件,
直接可以定位到源代码中位置,真是太他妈的神奇了,虽然Release版本下的很多变量的值是不对滴,但并不影响我这个
这么有执着心的coder来找bug。
同事给了我他写的示例,往空指针拷贝数据,在非调试下运行后,果然的崩了,果断滴生成了一个扩展名为dmp的文件,
然后他用vs2010打开那个dmp文件,vs2010很果断滴定位到了那个往空指针拷贝数据那里。
看他那娴熟的操作,顿时感觉到了他的强大和微软的牛逼。
后来我就学他,在程序中加入程序异常时产生dump文件的功能,待系统发布后,在一次不经意间一个程序挂掉了。
在客户的谩骂中,我面带笑容说:这个问题很好解决。我满怀信心滴从服务器上拷贝了程序崩溃产生dump文件,
然后学着那个同事用vs2010打开,我了个去,咋没有定位到源代码中内,只定位到了可执行文件的一个地址,这让哥
情何以堪呐!
还好,我对pdb了解还比较熟悉,想来应该是符号文件的问题,于是就开始摸索的,不经意见的在
堆栈处右击了下,发现菜单里竟然有“加载符号”,而且还有“符号路径”,我想这大概就是让我来选择
对应的pdb文件吧,顿时感觉曙光就在前面。
点击了“符号路径”后如下图:
才发现了,它并不是来选择符号文件,而是选择对应的可执行程序的路径,选择了后果断滴定位到了源代码的位置,
才发现一个很简单很美丽的bug,修改后,在测试后重现发布,系统的健壮性又提高了一个台阶。
回头想了想,我同事给我演示的时候,他程序运行的目录和就是他直接用vs2010生成的目录,所以此种情况下
用vs2010打开dmp文件即可定位到源代码文件。而发布后的程序,一般情况下你根本不知道别人放在什么地方去执行的,
因此调试时还并必须选相同版本的可执行文件,然后pdb文件才会好好工作,要不没可执行文件,咋个调试嘛。
哎,这同事,居然还留了一手,坑爹啊。
不过还是要感谢他滴,我又掌握了一些东西,又增强了我这个苦逼程序员写好程序的信心。
在写这个之前看了相关文章,感觉比较好的推荐一哈:
http://www.cppblog.com/woaidongmao/archive/2011/05/10/146086.html
- dump文件的调试
- window下dump文件的调试
- WINDBG调试DUMP文件
- 调试 core dump 文件
- WinDBG调试Dump文件
- VS2008调试dump文件
- dump文件调试
- ntsd调试dump文件
- VS2008调试dump文件
- 调试dump文件
- WinDbg调试dump文件
- vs2008 dump文件调试
- VS2008调试dump文件
- VS2010调试dump文件
- DUMP文件调试
- VS2008调试dump文件
- Linux 调试 core dump文件
- 如何调试崩溃dump文件
- releaseSession理解 (分页问题)
- find命令之(-atime,-ctime,-mtime)
- powerpoint中的自动缩略图效果
- Hibernate 实体映射
- 埃氏筛法(筛选素数)
- dump文件的调试
- protal认证的稳定性测试脚本
- c++学习笔记(5)——关于三种内存分配方法
- 攻破JAVA NIO技术壁垒
- 补间动画
- poj2386
- java容器:Collection中的Iterator和Map中的entrySet对比学习
- 理解mipi协议
- HDU2604 Queuing(矩阵快速幂模板)