欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    《部分程序调试》PPT课件.ppt

    • 资源ID:5612601       资源大小:1.28MB        全文页数:66页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《部分程序调试》PPT课件.ppt

    第8部分-2 程序调试,1.概述,什么叫调试?程序没有语法错误,但运行结果不符合期望时,采用适当的工具或方法,反复找出程序中存在的问题,进行修改,最终使程序符合要求的过程。调试是一个程序员必须要掌握的基本技巧,对于编写高质量程序非常重要。掌握基本的调试技巧对今后的学习、工作是非常必要的!,为什么要调试?,问题我的程序跟书上一样,怎么就不出结果呢?我的程序没错啊,怎么不出结果啊?我的程序运行结果不正确,如何找到错误?原因程序没有语法错误,不等于就没有语义错误。要确保程序没错,必须对程序进行各种测试,2.解决程序中的错误的方法,基本方法人工阅读走查,修改,程序员一行一行的看程序根据实验数据,在脑子里或在纸上模拟程序运行过程,在脑子里或纸上记录程序中间运行结果。在这过程中发现程序的错误。修改发现错误,重新运行测试,如果还有错,继续查看,修改。,这种方法是最为基本、人人都必须掌握的方法。以前程序调试手段以少,人们经常只能用用纸、笔和脑来模拟和记录程序动态运行中的状态。,基本方法存在的问题,这种方法效率不高,属于原始的方法。要求程序员具有很强的源程序理解、运行过程记忆、预测、纠错能力和经验。程序员必须用脑子、纸、笔来模拟程序的运行状态记录程序的执行进度记录所有变量或数据变化过程观察和记住执行过程中环境的变化程序和模块达到一定规模以后,就很难这样方法调试,效率太低,难度太大,很难发现问题,很难记录状态变化过程。程序员脑子中的计算与程序实际完成的计算往往有差异,这样的差异是很难发现的,是很难在纸上体现出来的。,采用辅助工具来协助调试,随着技术的进步,各种IDE的功能越来越强大,人们在IDE中实现并提供许多功能用来辅助程序员对程序进行调试。IDE的辅助功能提供工具让程序员能控制并看到程序的执行进程,如单步执行,执行到某个位置,进入到某个函数内部执行,在执行过程中,提供工具记录、展示甚至修改环境的状态:变量值,内存数据,函数返回值,程序界面输出结果,,使程序员不需要再在脑子中执行程序,使程序员不需要完全只用脑或纸和笔来记录程序的运行状态,并保证中间结果的正确性,一些值得思考的问题,为什么集成开发环境能够让程序员调试程序?是如何做到的?IDE要能使程序员调试一个程序,需要保存关于程序的哪些信息?调试信息,3.项目配置与调试Project Configuration and debugging,你是否注意到每个项目中的debug文件夹?注意,本节有许多不理解的概念,如果暂时看不懂,可以先跳过去。,什么叫项目?,项目即project,指通过设计实现一组程序完成用户所需功能的工程及过程。请查看上机写程序那个课件关于项目的解释。两个概念Project settings项目设置Project configuration项目配置,Project settings,项目具有许多属性,如:编译结果输出目录工作目录编译参数需要链接的函数库编译完以后做什么操作编译前要做的操作了解这些属性的意义以后,我们可以对这些属性值进行设置,以影响编译器的编译行为。,Project Configuration,对项目的所有属性的一组设置值统称为一个Project Configuration,即一组Project Settings统称为一个Project Configuration.VC提供两组标准项目设置信息的Configuration模板Debug默认的活跃的项目配置模板Release很有经验的程序员也可新建不同于这两组标准模板的项目配置。,Set active project configuration,在同一时刻,只能有一个configuration是有效的或活跃的。在Build菜单下选择Set active project configuration.,对项目配置的理解,可以从这个角度来简化理解(不够准确)每一个project都有一个开发状态,称为debug与release,得到的编译结果分别称为Debug版程序还处于调试状态的程序Release版程序最终提交给用户的可以执行的程序问题Debug版与Release版有什么区别?,区别,标准的Debug版的项目配置指示编译器在编译时,使项目或程序中包含有调试信息,对程序不做任何的优化,便于程序员调试程序。标准的Release版的配置指示编译器在编译时对程序进行优化。得到的结果在代码大小和运行速度上都是较优的,程序中也不包含调试信息。,问题:什么叫优化?为什么不能优化,Project Settings,选择C/C+页,Category中选择general,则出现一个Debug Info(调试信息)下拉列表框,可供选择的调试信息 方式包括:,一些编译选项及解释,看不懂可先不看,4.怎么调程序?,辅助我们调试程序的工具称为IDE的调试器debugger,如何进行入调试?,方法1.菜单:BuildStart DebugGo方法2.直接点击工具条上的Go按钮方法3.按热键F5,想让程序停下来,怎么办?,设置断点,断点是 最常用的技巧。断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。,设置断点方法,可以通过下述方法设置断点方法1简单方法把光标移动到需要设置断点的代码行上,然后按F9快捷键,或者点工具条上的小手图标。方法2功能更强大的一种方法弹出Breakpoints对话框按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。,本课件中的采用范例及流程说明,跟踪执行从程序开始显示菜单执行第3个功能结束运行的全过程,课堂演示程序,设断点,断点标志,断点标志,主函数里只有两条语句,调用菜单函数后返回。,设置断点对话框,去掉断点,把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。,条件断点(有点难),可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions(条件)按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就被中断。,数据断点(有点难),数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个 表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入 SelectTime这个全局变量的名字,那么当程序中有SelectTime+时,程序就将停在这个语句处。,消息断点(有点难),VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。,5.设了断点以后,如何走程序?,进入调试:1.点此按钮2.按F53.BuildStart DebugGo,黄色右箭头表示当前就要执行的代码行,当前执行中的上下文(语境,函数),自动给出的当前语境下的变量值、返回值观察窗口,Debug工具栏,自定义的观察窗口,可以定义多组,掌握Debug工具条的主要按钮含义,Stop debugging停止调试,step into单步跟进,如果当前语句有函数调用,则单步进入函数执行,否则单步执行完一条语句。,step over单步执行完当前语句,若当前语句有函数调用,除非被调用函数中有断点,否则不会跟进函数。,step out执行完当前语句所在函数的执行,返回该函数的调用处。,Run to cursor执行到当前光标处,,注意观察箭头便于理解记忆,常用进程控制快捷键,点击Step into后,进入函数Menu()执行,当前就要执行的代码行,语境切换成Menu(),6.如何了解执行状态?,查看数值,VC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。,watch,VC提供一种被称为Watch的机制来观看变量和表达式的值。在断点状态下,在变量上单击右键,选择Quick Watch,就弹出一个对话框,显示这个变量的值。,watch,单击Debug工具条上的Watch按钮,就出现一个Watch视图(Watch1,Watch2,Watch3,Watch4),在该视图中输入变量或者表达式,就可以观察 变量或者表达式的值。注意:这个表达式不能有副作用,例如+运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致 软件的逻辑被破坏。,点击Step over后,开始执行当前函数代码,自动给出当前语境下变量的值,当前执行的代码行,当前程序运行结果?,什么也没有,为什么?因为没有输出任何内容,再次单击Step over,执行完第一个printf语句,printf语句返回值被自动给出,表示输出了38个字符,执行结果?,执行第1条printf语句以后的输出结果,点击run to cursor,将光标移动到此行,printf语句返回值被自动给出,表示输出了38个字符,执行到此行之前,刚才那几个变量怎么不见了?因为有点远(上下文),只显示执行位置附近的,想看怎么办?,可以在此处增加你想看的东西。基本方法:直接在此处写上(还有别的办法加)你想看的内容的表达式如:想看SeleFun和SelectTime值,想看SelectTime的地址,怎么办,手工增加SeleFun和SelectTime变量,系统会自动给出它们的值,继续以step over的方式到此语句,注意观察debug工具栏的几个按钮已经变灰,原因是在执行scanf语句,等待你在运行窗口中录入数据,手工在任务条点击显示运行窗口,输入3,当前上下文的一些东西又自动出现了,这个+号表示还可展开查看,各个变量的值发生了变化,继续单击Step over,执行到ExecuteFunction函数,然后单击Step into进入此函数。,单击Step into进入ExecuteFunction函数执行代码。,为什么SeleFun的值发生了变化?,原因:语境发生变化了,ExecuteFunction函数中没有这个变量。,点击此处继续执行,当前执行的代码行,等待用户输入,手工在任务条点击显示运行窗口,输入任意正整数如:53,单击Step into进入prime函数执行代码。,点击step out,退出当前函数prime的执行,返回到原调用处,Call stack调用堆栈,想要知道函数被调用的过程怎么办?调用堆栈反映了当前断点处函数是被那些函数按照什么顺序调用的。单击Call stack按钮,显示Call Stack对话框。其中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数。单击这些函数名可以跳到对应的函数中去。,此按钮,点击step out,退出当前函数prime的执行,返回到原调用处,原调用处,运行结果显示,再次点击step out,退出当前函数ExecuteFunction的执行,返回到原调用处,此时准备执行下一遍循环,注意语境变化,观察SeleFun值的改变,因为语境发生变化,返回到了主调函数Menu()。,观察SelectTime值的变化,因为选择了一次执行,执行该行语句,等待用户输入选项,输入选项为0,准备结束程序运行,执行该语句,跳出for循环,打印选择次数,Menu()执行完毕,执行return语句后结束整个程序的调试运行。,在调试过程中可以随时点击此按钮结束程序运行。,8.Debug工具条上的其它按钮功能,Memory,由于指针指向的数组,Watch只能显示第一个元素的值。为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。在 Debug工具条上点memory按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的内存的内容。,Varibles,Debug工具条上的Varibles按钮弹出一个框,显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量,以红色显示。,Reigsters,Debug工具条上的Reigsters按钮弹出一个框,显示当前的所有寄存器的值。,其他调试手段,系统提供一系列特殊的函数或者宏来处理Debug版本相关的信息,如下:,本章应掌握的内容,掌握开发环境,工作空间,项目,程序模块的基本概念。学会使用基本的调试工具。,本部分结束,

    注意事项

    本文(《部分程序调试》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开