C语言课程序调试 (2).ppt
《C语言课程序调试 (2).ppt》由会员分享,可在线阅读,更多相关《C语言课程序调试 (2).ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8部分-2 程序调试北京交通大学计算机与信息技术学院 教师:林友芳1.概述n什么叫调试?n程序没有语法错误,但运行结果不符合期望时,采用适当的工具或方法,反复找出程序中存在的问题,进行修改,最终使程序符合要求的过程。n调试是一个程序员必须要掌握的基本技巧,对于编写高质量程序非常重要。n掌握基本的调试技巧对今后的学习、工作是非常必要的!北京交通大学计算机与信息技术学院 教师:林友芳为什么要调试?n问题n我的程序跟书上一样,怎么就不出结果呢?n我的程序没错啊,怎么不出结果啊?n我的程序运行结果不正确,如何找到错误?n原因n程序没有语法错误,不等于就没有语义错误。n要确保程序没错,必须对程序进行各
2、种测试2.解决程序中的错误的方法北京交通大学计算机与信息技术学院 教师:林友芳基本方法人工阅读走查,修改n程序员一行一行的看程序n根据实验数据,在脑子里或在纸上模拟程序运行过程,在脑子里或纸上记录程序中间运行结果。n在这过程中发现程序的错误。n修改发现错误,重新运行测试,如果还有错,继续查看,修改。这种方法是最为基本、人人都必须掌握的方法。以前程序调试手段以少,人们经常只能用用纸、笔和脑来模拟和记录程序动态运行中的状态。北京交通大学计算机与信息技术学院 教师:林友芳基本方法存在的问题n这种方法效率不高,属于原始的方法。n要求程序员具有很强的源程序理解、运行过程记忆、预测、纠错能力和经验。n程序
3、员必须用脑子、纸、笔来模拟程序的运行状态n记录程序的执行进度n记录所有变量或数据变化过程n观察和记住执行过程中环境的变化n程序和模块达到一定规模以后,就很难这样方法调试,效率太低,难度太大,很难发现问题,很难记录状态变化过程。n程序员脑子中的计算与程序实际完成的计算往往有差异,这样的差异是很难发现的,是很难在纸上体现出来的。北京交通大学计算机与信息技术学院 教师:林友芳采用辅助工具来协助调试n随着技术的进步,各种IDE的功能越来越强大,人们在IDE中实现并提供许多功能用来辅助程序员对程序进行调试。nIDE的辅助功能n提供工具让程序员能控制并看到程序的执行进程,如单步执行,执行到某个位置,进入到
4、某个函数内部执行,n在执行过程中,提供工具记录、展示甚至修改环境的状态:变量值,内存数据,函数返回值,程序界面输出结果,使程序员不需要再在脑子中执行程序使程序员不需要完全只用脑或纸和笔来记录程序的运行状态,并保证中间结果的正确性北京交通大学计算机与信息技术学院 教师:林友芳一些值得思考的问题n为什么集成开发环境能够让程序员调试程序?是如何做到的?nIDE要能使程序员调试一个程序,需要保存关于程序的哪些信息?n调试信息3.项目配置与调试Project Configuration and debugging你是否注意到每个项目中的debug文件夹?注意,本节有许多很理解的概念,如果暂时看不懂,可以
5、先跳过去。北京交通大学计算机与信息技术学院 教师:林友芳什么叫项目?n项目即project,指通过设计实现一组程序完成用户所需功能的工程及过程。n请查看上机写程序那个课件关于项目的解释。n两个概念nProject settings项目设置nProject configuration项目配置北京交通大学计算机与信息技术学院 教师:林友芳Project settingsn项目具有许多属性,如:n编译结果输出目录n工作目录n编译参数n需要链接的函数库n编译完以后做什么操作n编译前要做的操作nn了解这些属性的意义以后,我们可以对这些属性值进行设置,以影响编译器的编译行为。北京交通大学计算机与信息技术学
6、院 教师:林友芳Project Configurationn对项目的所有属性的一组设置值统称为一个Project Configuration,即一组Project Settings统称为一个Project Configuration.nVC提供两组标准项目设置信息的Configuration模板nDebug默认的活跃的项目配置模板nReleasen很有经验的程序员也可新建不同于这两组标准模板的项目配置。北京交通大学计算机与信息技术学院 教师:林友芳Set active project configurationn在同一时刻,只能有一个configuration是有效的或活跃的。n在Build菜
7、单下选择Set active project configuration.北京交通大学计算机与信息技术学院 教师:林友芳对项目配置的理解n可以从这个角度来简化理解(不够准确)n每一个project都有一个开发状态,称为debug与release,得到的编译结果分别称为nDebug版程序还处于调试状态的程序nRelease版程序最终提交给用户的可以执行的程序n问题nDebug版与Release版有什么区别?北京交通大学计算机与信息技术学院 教师:林友芳区别n标准的Debug版的项目配置指示编译器在编译时,使项目或程序中包含有调试信息,对程序不做任何的优化,便于程序员调试程序。n标准的Releas
8、e版的配置指示编译器在编译时对程序进行优化。得到的结果在代码大小和运行速度上都是较优的,程序中也不包含调试信息。问题:什么叫优化?为什么不能优化北京交通大学计算机与信息技术学院 教师:林友芳Project Settings北京交通大学计算机与信息技术学院 教师:林友芳选择C/C+页,Category中选择general,则出现一个Debug Info(调试信息)下拉列表框,可供选择的调试信息 方式包括:一些编译选项及解释命令行命令行Project settings说明说明无None没有调试信息/ZdLine Numbers Only目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不
9、包含符号调试信息/Z7C 7.0-Compatible目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等/ZiProgram Database创建一个程序库(PDB),包括类型信息和符号调试信息。/ZIProgram Database for Edit and Continue除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效看不懂可先不看4.怎么调程序?辅助我们调试程序的工具称为IDE的调试器debugger北京交通大学计算机与信息技术学院 教师:林友芳如何进行入调试?方法1.菜单:Buil
10、dStart DebugGo方法2.直接点击工具条上的Go按钮方法3.按热键F5想让程序停下来,怎么办?北京交通大学计算机与信息技术学院 教师:林友芳设置断点n断点是 最常用的技巧。n断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。n调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。北京交通大学计算机与信息技术学院 教师:林友芳设置断点方法n可以通过下述方法设置断点n方法1简单方法n把光标移动到需要设置断点的代码行上,然后按F9快捷键,或者点工具条上的小手图标。n方法2功能更强大的一种方法n弹出Breakpoints对话框n按快捷键CTRL+B或A
11、LT+F9,或者通过菜单Edit/Breakpoints打开。n打开后点击Break at编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。北京交通大学计算机与信息技术学院 教师:林友芳本课件中的采用范例及流程说明跟踪执行从程序开始显示菜单执行第3个功能结束运行的全过程课堂演示程序北京交通大学计算机与信息技术学院 教师:林友芳设断点断点标志断点标志主函数里只有两条语句,调用菜单函数后返回。北京交通大学计算机与信息技术学院 教师:林友芳设置断点对话框北京交通大学计算机
12、与信息技术学院 教师:林友芳去掉断点n把光标移动到给定断点所在的行,再次按F9就可以取消断点。n同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。北京交通大学计算机与信息技术学院 教师:林友芳条件断点(有点难)n可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions(条件)按钮,为断点设置一个表达式。n当这个表达式发生改变时,程序就被中断。北京交通大学计算机与信息技术学院 教师:林友芳数据断点(有点难)n数据断点只能在Breakpoints对话框中设置。n选择“Data”页,就显示了设置数据断点的对话框n。在编辑框中输入一个表达式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程序调试 2 语言 课程 调试
限制150内