软件调试排错除错工具篇

来源:互联网 发布:vb 校验和程序 编辑:程序博客网 时间:2024/05/16 09:23
1、事先说明:
如果你软件设计整体架构比较优秀,而且软件本身又比较健全的排错机制,大部分情况都可以通过现象和排错日志快速定位出来,那么恭喜你,减少了很多维护软件bug而产生的多余死人的工作量。
2、排错除错使用范围:
     2.1   你刚接手别人的一个项目,这个项目的源码结构非常混乱,经手人次也非常多,无法通过简单的阅读代码就可以明白软件的整体结构。或者说:即使了解了软件的整体结构,由于软件设计的不合理,导致软件体系根本就没有 调试框架和层次区分。整个软件的设计就是填充式代码堆积。
     2.2   破解别人的无源码的工具情况
3、工具使用
     3.1   IDA工具
 大家熟知,这个工具主要是用来进行源代码阅读的,调试能力不强。  但是针对某些具体的章节,他可以辅助我们进行源码的理解。 配合Hex-Rays[1].Decompiler.v1.0.for.DataRescue.IDA.Pro.Advanced.v5.2-YAG插进,可以快速的了解代码的功能。
     3.2   ollydbg
这个就是调试利器了,强大之处就是:
可以跟踪vc6出现的堆栈跑飞的问题;(所跟踪的堆栈是整个堆栈区的,而并不仅仅是根据堆栈的调用链来显示)
可以通过编写调试脚本进行构造调试条件,直接定位问题所在; 
可以通过直接写入eip,跳过某些限制条件(当前这个前提你要了解依赖关系,控制好前后联系);
可以通过写入内存、cpu具体的数值,构造问题发生的条件,直接定位问题

好,我们可以开始干活了。
情况1:  自己写的工具,自己内部使用,   调试关键: 安全性不高,关键是快速定位问题
那么我们可以通过ida和ollydbg打开 我们的发布程序,生成
                 静态分析信息idb                和
                 调试信息udd文件夹下的文件。  
当然这之前,请先设置 
                  microsoft符号调试文件,
                  mfc调试符号文件(用于mfc调试情况), 
                  发布程序调试lib的符号文件. 
当然如果你发布的时候,如果能够带上这5个文件,配合od调试器当然是完美啦,问题轻松搞定。 我们就希望能够拥有所有的信息来进行问题一次搞定

情况2:
0 0