VC6.0下调bug的流程
2007-12-26 19:54
302 查看
1. 首先在要调试的项目下建立一个文件夹CurrentUse,把要修改的那个类拖到此文件夹下,免得查看其它类后再次查找,如果类文件很多的话,查找一个类文件会很耽误时间
2. 然后根据加入断点,并以自己的习惯的方法去锁定问题所在。(变量发生错误的地方强行修改为有效值)
以今天调试的一个bug为例
在debug下加入断点后逐步调试,发现有一个变量在其传递过程中发生了变化,接着单独跟踪这个变量,把这个变量所有使用的地方加上断点,开始调试,发现在其中一次传递时,明明是有效数据,传过来后就变成无效数据了,找到了一个出错的问题,那么此错误是不是引起这个bug的原因呢?继续排除,首先找了一遍没有发现重名现象,接着在调用此变量的所有代码行上面加入一行代码,用于给此变量强行赋一个有效值,再调试通过,返回结果正确,现在确定了是此变量的使用引起的bug。
接着检查这个变量的声明使用,也没有发现任何错误,这时候想起在这个类下打开类向导时打不开的问题,难道是它引起的错误?又查看了一下头文件里此变量声明处的代码,发现//{{AFX_DATA(类名) 类向导自动生成的变量声明 //}}AFX_DATA 里的变量声明有改动,此处声明了一个数组,再查看了cpp文件里函数DoDataExchange()里使用的变量,发现是用数组的每一位数据来做成员变量使用,安说这种用法是可以的,但是记得有本书里写到“//{{AFX_DATA(类名) 类向导自动生成的变量声明//}}AFX_DATA”这样的格式是供类向导定位使用的,那么是不是此处类向导发现头文件里的变量和cpp文件里函数DoDataExchange()里的变量不一致而发生打不开呢?试着把数组改为变量让其一一对应,类向导打开正常,调试也通过,看来还真有可能是这个原因造成的bug,接着改代码里所有使用此数组的地方的逻辑,调试通过,bug也消除。
3.理解代码逻辑后再修改代码
2. 然后根据加入断点,并以自己的习惯的方法去锁定问题所在。(变量发生错误的地方强行修改为有效值)
以今天调试的一个bug为例
在debug下加入断点后逐步调试,发现有一个变量在其传递过程中发生了变化,接着单独跟踪这个变量,把这个变量所有使用的地方加上断点,开始调试,发现在其中一次传递时,明明是有效数据,传过来后就变成无效数据了,找到了一个出错的问题,那么此错误是不是引起这个bug的原因呢?继续排除,首先找了一遍没有发现重名现象,接着在调用此变量的所有代码行上面加入一行代码,用于给此变量强行赋一个有效值,再调试通过,返回结果正确,现在确定了是此变量的使用引起的bug。
接着检查这个变量的声明使用,也没有发现任何错误,这时候想起在这个类下打开类向导时打不开的问题,难道是它引起的错误?又查看了一下头文件里此变量声明处的代码,发现//{{AFX_DATA(类名) 类向导自动生成的变量声明 //}}AFX_DATA 里的变量声明有改动,此处声明了一个数组,再查看了cpp文件里函数DoDataExchange()里使用的变量,发现是用数组的每一位数据来做成员变量使用,安说这种用法是可以的,但是记得有本书里写到“//{{AFX_DATA(类名) 类向导自动生成的变量声明//}}AFX_DATA”这样的格式是供类向导定位使用的,那么是不是此处类向导发现头文件里的变量和cpp文件里函数DoDataExchange()里的变量不一致而发生打不开呢?试着把数组改为变量让其一一对应,类向导打开正常,调试也通过,看来还真有可能是这个原因造成的bug,接着改代码里所有使用此数组的地方的逻辑,调试通过,bug也消除。
3.理解代码逻辑后再修改代码
相关文章推荐
- 关于 VC6.0 运算符重载的一点 Bug
- 转载:bug的处理流程
- Git之修复Bug流程
- BUG流程分析
- VC6.0中友元函数访问类的私有成员的bug
- MySQL Bug导致异常宕机的分析流程
- C++ getline在VC6.0的一个bug(处理方法)(转)
- 这样的工作流程让网易在14个月修复2000个bug | 游戏葡萄
- 写了交互给后台后来不能用?bug多多多又找不到文件效率低?工作流程帮你优化起来~~~~
- ubuntu下安装Android Studio 流程以及出现的bug
- 交接工作不要只分析流程和看静态的看代码呀,一定要动手,增加一个功能,解决一个 BUG什么的,才能真正理解交接的工作内容呀!
- bug的处理流程(不谈工具)
- bug的处理流程
- VC6.0 覆盖数据的bug
- 软件测试的重要环节:Bug管理流程
- bug流程&提交规范
- TFS2012导Bug流程时,提示TF26204: The account you entered is not recognized.
- windows程序窗体创建流程模型A--发送自定义消息逻辑上出现Bug
- pytorch pruning训练自己的数据库(流程+BUG调试)