`VC6程序的基本调试方法.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC6程序的基本调试方法 目 录 3 严谨思维,调试程序 1 3.1 什么时候需要对程序进行调试 1 3.2 对程序进行调试的基本手段和方法 1 (1)观察了解程序的“病症”表现 1 (2)弄清程序的主要工作流程 1 (3)进行大致的检查,确定问题存在的模块 3 (4)检查故障模块,确定问题并解决 3 3.3 对程序进行调试的基本手段 4 (1)设置固定断点或临时断点 4 (2)单步执行程序 4 (3)使用断言 5 (4)与调试相关的操作菜单:Build菜单 6 (5)与调试相关的操作菜单:Debug菜单 6 3.4 对一个简单程序的调试过程 7 3.5 设计合适的程序调试方案 8 3.6 优秀程序员的基本素质——丰富的想象、严谨的思维 10 (1)程序运行结果看起来对了,但并不意味着程序没有隐藏的问题 10 (2)严谨思维的典范——程序员学习的榜样 11 3 严谨思维,调试程序 所谓程序调试,是指当程序的工作情况(运行结果)与设计的要求不一致——通常是程序的运行结果不对时,科学地(而不是凭偶然的运气)通过一定的方法、使用一定的手段来检查程序中存在的设计问题(某种逻辑错误而不是语法、链接错误,修正语法、链接错误不是调试程序要做的事)。 3.1 什么时候需要对程序进行调试 当程序编译出错或者链接出错时,系统都将在Output输出窗口中随时显示出有关的提示信息或出错警告信息等(如果是编译出错,只要双击Output窗口中的出错信息就可以自动跳到出错的程序行,以便仔细查找)。但若编译和链接都正确,而执行结果又总是不正确时,这时就需要使用调试工具来帮着“侦察”出程序中隐藏着的出错位置(某种逻辑错误)。 强调:初学者常犯的错误是认为“编译和链接”都正确,程序就应该没有问题,怎么会结果不对呢?“编译和链接”都正确,只能说明程序没有语法和拼写上的错误,但在算法(逻辑)上有没有错,还得看结果对不对。反过来讲,无论让你设计一个什么样的程序,你都只写以下几行,则“编译和链接”肯定都正确,但能实现设计的要求吗? #include stdio.h int main(void) { printf(Hello World!\n); return 0; } 事实上,程序设计的重点完全不是修正编译和链接过程中的错误——相对而言,这种工作基本没有技术含量,程序设计的主要工作是设计正确的算法。 3.2 对程序进行调试的基本手段和方法 调试程序的方法与医生看病的道理类似:先问清基本情况,再进行大致的检查,然后分析检查的结果、确定范围,再进行专项检查,再分析检查结果,如此反复,最后确定问题所在并进行治疗、检查疗效。 必须指出的是:用户调试自己的程序时,应对程序的设计(工作)思路非常清楚,知道每一段、每一行程序所应起到(尽管不见得都能实现)的作用,这是基本的前提。若自己对设计都不清楚、甚至不知道每一段、每一行程序应发挥的作用,是谈不上调试程序的。 (1)观察了解程序的“病症”表现 首先是看清情况,程序的任务、程序的预期表现与程序工作的实际表现,大概是什么方面的“病”——对于常见的小“病”,经验丰富的专家不用后续检查就能知道问题所在。经验当然重要,但对于初学者而言,掌握正确的调试思路则更加重要,因为初学者很难通过观察程序而发现问题所在。 (2)弄清程序的主要工作流程 在学习过程中设计的程序一般都不太复杂,从总体算法上总是可以划分为几个大的模块(也可称为步骤,可以是一段程序或一个子程序——函数):接收用户的要求和任务(读取相应的参数、输入相应的数据)、 #include stdio.h int main(void) { int a[10000], i, j, num, x, tmp, mini; //从键盘读入用户输入的数据,数据存放在数组a中,num printf(\nPlease input numbers:); for (i=0; i10000; j++) { scanf(%f, x); if (x = -222) //如果读入的数为结束标志,则结束输入 { break; } a[i] = x; num++; //num记录已读入的有效数据的个数 } //计算与处理:对数据进行从小到大排序,排序使用的方法是选择法 for (i=0; inum; i++) //依次找出第0,1,2…个最小的并放到相应位置a[i] { mini = i; //开始找第i个最小的,先假定a[i]最小,mini负责记最小的所在位置 for (j=i+1; jnum; j++) //从i后的所有数中,找出最小的一个,位置记入mini { if (a[j] a[mini])

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档