C++编程的调试技巧课件.pptVIP

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++编程的调试技巧 主要内容 VC++集成开发环境 调试方法 如何独立解决问题 编程规范 一、集成开发环境的熟悉 二、调试方法 树立正确的编程方法论 没有解决不了的问题,树立编程信心 按照正确的方法来编程 从实践中体会解决问题的思路、编程的思想 熟练掌握语法,数据结构,算法、模式,底层环境 按照编程规范来编写代码 充分利用各种资源: 调试器 msdn 网络有哪些信誉好的足球投注网站引擎 常用调试手段 利用编译器的输出信息排除错误 利用调试器的调试功能 单步、run to cursor、断点、条件断点、查看堆栈、 利用watch窗口查看变量、表达式的值 分段调试法、增量调试法 利用flush人为刷新缓冲区 修改输出信息,增加标志位 利用输出语句打印调试信息 通过堆栈观察函数调用情况 综合程序调试方法 注释的技巧、条件编译 几个简单例子 结 论 1 永远不要写过长的语句,应该让代码尽可能简单;永远不要把两条语句写在一行中,以便于调试。 结 论 2 要尽可能的熟悉语法知识 充分利用编译器提供的信息 编程过程中要细心 思路要清晰,没把握时,要先画流程图,然后再编码 结 论 3 要掌握编程的本质: 是由程序员控制机器,使其按照我们的思路运转,机器本身没有智能。 结 论 4 编译器不一定能给出确切的错误信息,要合理的“猜测” 出错信息 通过单步运行的方式加深我们对程序执行流程的理解。 单步执行是最重要的调试手段! 结 论 5 通过单步执行可以发现程序运行的轨迹 通过单步执行可以随时监视变量的值,无论何时发现变量值与我们的预期不一致时,即找到了错误点 单步调试方法 前提:debug版本可执行程序,build正确 进入调试状态 F10为单步调试,要深入到子函数中单步调试,应在函数调用语句处按F11 单步调试应该结合watch窗口监视变量值的变化 稍复杂的例子 结 论 6 分段调试:可以有效降低调试难度,快速定位错误的大致范围,“粗调” 单步F10调试:找到可疑点后,逐行执行可疑点附近的代码,对错误“精调” run to cursor:使程序快速运行到可疑点后暂停,克服F10运行速度慢的缺点 强制输出(flush):增加有参考价值的信息 watch窗口:可观察变量或表达式的值,配合F10进行单步“精调” 小技巧 在循环体内,每执行一次run to cursor,就相当于完整的执行了一遍循环体,经常用来替代多次执行F10。 结 论 7 F11可以深入到函数内部单步执行,F11和F10结合起来使用可以调试多函数的程序。 step over可以从当前函数中跳出到调用点 观察堆栈能看到函数之间的调用关系 在适当的位置插入输出语句,有助于了解程序的执行流程,是一种十分重要的调试手段 小技巧 单步调试时,如果某条语句不是调用自定义的函数,那么不要按F11,尤其是本行包含了cout 综合实例 小技巧 在VC++集成开发环境中执行控制台程序,执行完毕后VC++会自动加暂停,但是直接在文件系统中执行时没有这个暂停功能。 解决办法:在命令提示符下执行程序,使用输出重定向功能,然后去相关目录下查看输出文件。 小技巧 利用 // 和 /* */ 注释掉代码段的简便方法 养成良好的变成习惯与风格,可参考教材算法的代码格式或者一些公司的代码规范要求。 #include iostream.h void main() { ///* for(int i=1;i=10;i++) { for(int j=1;j=i;j++) cout*flush; coutendl; } coutendl; //*/ ///* for(int t=1;t=10;t++) { for(int k=1;k=11-t;k++) cout*; coutendl; } coutendl; //*/ } 编程规范: #includeiostream.h int main() { int m; cout请输入一个正整数:endl; cinm; for(int i=1;i=m-1;i++) { m=m*i; } cout阶乘为:mendl; return 0; } 求阶乘 #includeiostream.h int main() { int m; cout请输入一个正整数:endl; cinm; for(int i=1;i=m-1;i++) { m=m*i; //循环体内修改了循环条件 } cout阶乘为:mendl; return 0; } 求阶乘 通过单步执行可以监视变量的变化,当变量与预期不一致是,即找到了错误点 #includeiostream.h int main()

文档评论(0)

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

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

1亿VIP精品文档

相关文档