计算系统基础第5章 测试和调试.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算系统基础第5章 测试和调试

调试技术 查看源代码 源代码的区域很小而且对代码非常熟悉的话,就适合采用这种方法 在代码中插入一些语句,在执行期间输出相关信息 源水平调试器 插入语句 使用printf语句 输出被认为在找错误上有用的重要变量的值 在条件结构或重复结构中插入printf语句,查看程序的控制流程是否正确运行 对于简单的程序,这种技术很容易使用 需要重新编译、执行 插入的代码——bug 计算6的阶乘 #include stdio.h int main() { int i; int n = 6; int result = 1; ? for (i = 1; i n; i++) result = result * i; printf (%d\n, result); } 插入printf for (i = 1; i n; i++) { result = result * i; printf (%d\n, result); } 源水平调试器 允许程序在一个可控的环境下执行的工具,在其中,程序执行的所有方面都可以被程序员控制和检查 所有的调试器均支持一个调试程序所必需的核心操作集 一类用于控制程序的执行 一类用于在程序执行过程中检查变量的值等相关信息 断点 在程序执行的过程中,指定一些点,在这些点,程序可以被临时停止——检查或者修改程序的状态 在某个特定行添加一个断点; 当执行到那一行时,程序的执行被及时冻结,检查所有与程序有关的事物。 断点 条件断点 只有当一个特定的条件成立时才暂停于某一行 对于隔离出那些被怀疑执行有错误的特定情况是非常有用的 观察点 在任意一个特定条件为真的地方都能使程序停止 例如,只要当变量i等于4时,程序就停止执行;调试器在任何使i等于4的语句处停止执行 观察点不是与代码的任何单独一行有关的,而是应用于每一行 单步 一旦调试器到达一个断点/观察点,它会临时挂起程序的执行,并等待下一条命令 从断点开始,一次处理一条语句——单步 执行当前的源代码行,然后再次将程序挂起,监视当前程序 检查变量的值 确定程序的控制流程是否做了被期待做的事情 验证for语句是否执行了正确的重复次数,或者验证if-else是否设置了正确的条件 显示值 一般说来,在断点处可以检查程序的所有执行状态 使用鼠标在源代码窗口指向一个变量,使得弹出窗口显示这个变量的当前值 输入想要检查的变量名 示例 #include stdio.h int main() { int i; int n; int result = 1; scanf (“%d”, n); ? for (i = 1; i n; i++) result = result * i; printf (%d\n, result); } 使用单步执行命令,跟踪for循环的执行过程; VC gdb 正确编程 为了在测试之前就能避免问题或者发现问题 需求阶段 明确规格说明 设计阶段 模块化设计,把简单的、预先测试过的和可以运行的组件构建为程序、函数和库 编码阶段 防御性编程技术,在错误还没成为错误之前,就能够被避免或发现,一种“防卫”方式,而不是对程序的“补救” 防御性程序设计 采用良好的编程风格,增强代码的可读性和可维护性 在使用前初始化所有变量,不给变量的使用留下任何疑问,可以避免或减少错误的出现; 写注释,不仅仅可以告诉别人这些代码如何运行,它同时也是一个重新思考的过程,在写注释的过程中,可能会发现问题; 避免使用全局变量,因为全局变量会使代码难以理解和扩展,而且检测到错误时,难以分析; 对齐左右大括号能够识别出那些缺少括号的简单的语义错误; …… 防御性程序设计 避免假设 编写代码时所作的简单的假设,最终将导致代码的崩溃 在编程时使用断言,避免假设 注意编译器的警告信息,例如 未经初始化的变量 已经声明但未使用过的变量 变量被赋予不同类型的值 …… 书面作业 5.1 5.2 5.3 5.4 * * 第五章 测试和调试 软件开发过程 5个阶段: 软件需求分析 软件需求工程 软件设计 软件系统设计与体系结构 程序编码 …… 软件构造 软件测试 软件测试与质量 软件维护 软件需求分析 了解客户需求,确定软件产品应该具备哪些功能 将产品的功能、外观等写成文档,即需求规格说明 软件设计 在编写代码之前,必须对如何实现需求进行设计,并形成设计文档 程序流程图就是设计文档中的内容 程序编码 代码编写 软件测试 写了一个程序,并不意味着它可以正确的运行,因此,在程序被投入使用之前,必须尽可能的进行彻底的测试 软件维护 根据软件运行的情况,对软件进行适当修改,以适应新的需求,以及纠正运行中发现的错误 系统缺陷 1994年,美国数学家托马斯·奈斯利,发现Pentium处理器计算浮点数除法存在缺陷(FDIV

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档