如何调试程序.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何调试程序

如何调试程序 1、调试中的输入输出 • 方法一:使用剪贴板 • 可以将输入数据预先写好(用记事本、开 发环境的编辑器或随便什么能够录入的东 西),再将输入数据复制到剪贴板上(也 就是说我们通常所说的复制操作)。在调 试运行时,就可以直接将输入数据粘贴上 去,不需要手工输入,这对于反复调试同 一组测试数据尤其方便。 • 方法二:利用文件输入输出 • 对于输入文件 • freopen(“文件名”,”r”,stdin); • 对于输出文件 • freopen(“文件名”,”w”,stdout); 2、输出调试信息 • 在调试时,很多同学往往首先想到的是使用开发环境所提供的 调试功能:设置断点、单步执行、查看和修改变量,甚至改变 程序的流程。不可否认,使用开发环境所提供的调试功能的确 很方便,但当你过分依赖于这些集成工具时,你可能忽略了很 多更有效的手段:仔细地分析、充分的信息。 • 当我们发现程序没有按照自己预期得那样工作时,不要急于跟 踪甚至修改程序,而是应该首先仔细对程序的逻辑、语句、表 达式进行检查和分析,尽可能使程序在表达上更简洁、更干净。 如果实在难以发现问题所在,也不必急于借助于集成工具去跟 踪程序的运行。早期的程序员在调试程序时经常会在程序中加 入输出调试信息的语句或过程,用以观察程序的运行过程,分 析程序的运行逻辑,这种调试手段即使在今天也仍然是非常有 效的。 • 输出的调试信息要尽量容易阅读,格式清楚,在必要的时候, 可以借助工具程序或自己编写的程序对输出信息进行处理,以 帮助分析问题。 • 调试的目的就是要分析错误发生的原因,寻找线索。 盲目的调试只会浪费时间。 • 调试中的技巧很多,这里提出几条基本原则: • 首先是要使错误可重现,要设法保证能够使错误按 照自己的意愿重复出现。对于不知道什么时候会冒 出来的错误,分析起来会困难得多! • 缩小导致错误的输入,设法构造出最小的又能保证 错误出现的输入,这样可以减少变化的可能性,使 分析范围更集中。经常可以采用二分选择的方法来 选择输入,就是舍掉一半输入,看看错误是否会出 现,如果不出现,则选择另一半输入,如此反复, 并不断缩小导致错误的输入。 • Compile Error(CE) • Time Limit Exceeded (TLE) • Memory Limit Exceeded (MLE) • Runtime Error(RE) – SIGSEGV 栈溢出or数组越界 – SIGFPE 除法除0 • Wrong Answer (WA) (⊙o⊙)… • 数据类型错误 • 输出格式错误 • 忘记删除用于输出调试信息的语句 如何让你的代码更漂亮 • 养成一个好的编程习惯 • 学会去优化自己的模板 • 合理使用宏定义 • 将执行不同功能的程序写在不同的函数中, 最后在主函数中调用 • 合理使用函数库和类模板 4 、构造测试数据和测试程序 • 在题目中所给出的测试样例只是一小组测试数据,这虽然通常 是我们用来测试程序的第一组数据,但却是远远不够的。我们 应该根据题意自行构造更多的测试数据,尤其是一些边界状态 的测试数据(数据极大、数据极小、数据量极多、数据量极少、 预期出现极端结果等情况)。 • 边界测试数据可以用于检查程序中是否存在边界错误,设计有 缺陷的程序,在处理边界测试数据时往往容易暴露出错误。但 如果没有发生明显的运行错误,就需要对结果的正确性进行验 证。 • 有些测试数据可以通过手工计算求出结果,再与程序的计算结 果相对比,而也有些问题,可以通过构造测试程序来进行验证。 • 测试程序通常是用确定可靠的算法编写的解题程序,但不须考 虑时间和空间的消耗,用测试程序对测试数据进行求解,用计 算结果与待测试程序的计算结果进行对比。 • 随机生成数据+文件对拍 生成随机数 • #includestdio.h • #incl

文档评论(0)

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

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

1亿VIP精品文档

相关文档