![lab03VC集成开发环境调试-v12_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/22/092a40c5-0369-4042-a4a8-be22e92d3d67/092a40c5-0369-4042-a4a8-be22e92d3d671.gif)
![lab03VC集成开发环境调试-v12_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/22/092a40c5-0369-4042-a4a8-be22e92d3d67/092a40c5-0369-4042-a4a8-be22e92d3d672.gif)
![lab03VC集成开发环境调试-v12_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/22/092a40c5-0369-4042-a4a8-be22e92d3d67/092a40c5-0369-4042-a4a8-be22e92d3d673.gif)
![lab03VC集成开发环境调试-v12_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/22/092a40c5-0369-4042-a4a8-be22e92d3d67/092a40c5-0369-4042-a4a8-be22e92d3d674.gif)
![lab03VC集成开发环境调试-v12_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/22/092a40c5-0369-4042-a4a8-be22e92d3d67/092a40c5-0369-4042-a4a8-be22e92d3d675.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC集成开发环境调试C语言实验指导VC集成开发环境调试C语言实验指导北京邮电大学软件学院崔毅东cyd2012年10月修订历史记录日期版本说明作者2010/061.0初始版本,作为教材附录崔毅东SICE;何娜StateKeyLab2011/101.1格式调整,作为独立发行版崔毅东SSE;2012/101.2补充为程序增加调试信息的设置正文目录1.基本概念51.1.调试菜单和工具栏51.2.断点和跟踪点调试62.用于示例的代码93.调试的基本流程123.1.断点调试123.1.1 设置普通断点123.1.2 设置条件断点123.2.单步调试与查看变量值133.3.小结15图表目录图表 1.11De
2、bug调试菜单选项图5图表 1.12设置函数断点图7图表 1.13条件断点Breakpoint Condition对话框7图表 1.14跟踪点属性设置对话框8图表 1.31设置普通断点示意图12图表 1.32 条件断点设置示意图113图表 1.33条件断点设置示意图213图表 1.34 WriteArray函数处设置普通断点14图表 1.35watch窗口查看变量示意图14图表 1.36 QuickWatch窗口示意图15图表 1.37 Step Out单步调试示意图15表格目录表格 1.11Debug菜单项的功能描述5表格 1.12 Visual C+ 2010断点标识8-16-VC集成开发
3、环境调试C语言实验指导1. 简述程序调试(debug),又称为程序除错,是所有程序员都必须掌握的一种技能。调试一般分为两类:静态调试和动态调试。所谓静态调试,是指通过程序员阅读代码,通过编译器或者其他静态代码检查工具(例如LINT)编译或者检查代码,从而发现程序中的语法或逻辑错误的办法。而动态调试,则是利用调试工具,在代码运行过程中排查程序逻辑错误的办法。目前C+编程语言最常用的两种编译器是微软公司的Visual C+(简称VC)和开源社区GNU所提供的g+。对应的调试工具分别是VC集成开发环境中内嵌的调试器和GNU的GDB (GNU Debugger)。GDB是一个命令行式的调试工具,对初学
4、者来说很困难;而VC内嵌的调试器是与开发环境集成在一起的,有图形界面,对初学者来说很友好,因此,我们以VC内嵌的调试工具为例,介绍程序调试的一般方法。考虑到微软的Visual C+每隔2-3年就会更新一个版本,我们选用目前最新的Visual C+2010英文版做例子。实际上,使用过Visual C+ 2005/2008的读者会发现,在这几个版本中,关于调试的基本功能,几乎没有变化。2. 基本概念在日常的编程中,程序员经常离不开的工作之一,就是调试。当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各种各样的错误,程序员就必须进行调试,将这些错误解除。在Visual C+ 2010中,
5、提供了非常强大而方便的调试功能,从而使程序员能节约时间,提高工作效率。下面我们就来介绍一下Visual C+ 2010调试器中的一些基本概念和使用方法。2.1. 调试菜单和工具栏Debug(调试)菜单和相关工具栏提供了第一层启动调试会话、逐语句调试代码、管理断点和访问许多Visual C+调试特性的功能。Debug(调试)菜单的选项如图表1.1-1所示。图表 2.11Debug调试菜单选项图表格1.1-1简要的介绍了Debug中主要选项的用途,这些用途包括设置断点,查看变量、成员数据的值,单步执行代码,重启会话及一些更为灵活复杂的调试功能。表格 2.11Debug菜单项的功能描述菜单项描述Wi
6、ndows->Breakpoint允许在调试会话过程中打开Breakpoint窗口WindowsOutput在调试的过程中打开Output窗口来读出编译器和调试器发送的输出信息WindowsWatch在IDE中打开监视窗口,在调试会话的过程中监视窗口可以监视用户指定的变量或表达式的值及其数据类型,用户可以同时创建多个Watch窗口,并且可以从QuickWatch窗口向监视窗口添加变量或者表达式WindowsAutos在IDE中打开自动窗口,这个窗口显示代码的当前行和上一行的变量及其值Step IntoStep Into命令使调试器前进一行,如果选择Step Into(逐语句)调试函数,调
7、试器会进入当前函数内部进行调试Step OverStep Over命令使调试器前进一行,但与Step Into的主要差别是, Step Over(逐过程)命令帮助你保持焦点在当前过程而不进入任何调用的函数内部。也就是说,逐过程命令将会逐行执行代码而不会进入到任何被调用函数、构造函数或者属性函数的内部。Step Out告诉调试器执行当前的函数,然后在函数执行完成后跳出当前函数,回到调试(中断)状态。有时候你只想调试一个函数的一部分代码的时候,调试完想快速跳出当前函数可以使用这个命令Quick Watch当调试器在中断模式时打开Quick Watch窗口。Quick Watch窗口显示你所监视的一
8、个变量或者表达式及其值,在快速监视窗口中点击Reevaluate,窗口中的项会被重新求值。点击Add Watch按钮,相应的变量会被添加到Watch 窗口中。Toggle Breakpoint打开或关闭活动的断点New Breakpoint弹出New Breakpoint对话框,创建不同模式的断点,可以创建函数断点和数据断点Delete All Breakpoint删除当前程序中设置的所有断点Disable All Breakpoint禁用当前程序中的所有断点,但是不删除它们,也可以禁用个别断点Enable All Breakpoint启用所有因为调用Disable All Breakpoin
9、t选项而被禁用的断点2.2. 断点和跟踪点调试在Visual C+2010中可以通过断点和跟踪点来控制调试器。断点允许你指明调试器必须在某一特定行中断。跟踪点是一种当调试器到达某特定行的时候执行一种动作的断点。这通常包含发送一些与应用程序相关的信息到输出窗口。掌握这类断点的用法可以减少定位和修复代码错误的时间。下面我们简要的介绍一下断点和跟踪点调试的流程1. 设置断点设置断点最通常的做法就是找到你想让调试器中断的代码行,然后单击代码编辑器的指示器边距。这样操作后指定行的指示器边距将会出现一个红色的圆圈,这样断点就设置成功,在进行调试的时候程序运行此断点处便会产生中断。 2. 设置函数断点通过N
10、ew Breakpoint->Break at Function对话框设置的断点称之为函数断点(function breakpoint)。可以手动的设置中断的函数的名称以及在该函数的哪一行哪一个字符处中断,这对于较长的代码段设置断点是非常方便的,避免了手动寻找断点的具体位置,提高调试的效率。图表 2.21设置函数断点图3设置条件的断点当设置了条件断点后,只有当提前设置的条件被测试为真或者改变的时候,调试器才会在断点位置中断。这对于调试一些只有在特定条件下才会发生的bug的时候是十分高效有用的方法。在设置条件断点时,首先在需要设置断点的位置设置一个普通断点,然后在右键菜单中选择Condit
11、ion选项,这是会弹出一个Breakpoint Condition对话框,如图1.1-3所示图表 2.22条件断点Breakpoint Condition对话框当设置一个条件时,有两种选择:Is True(为真)或者Has Changed(已改变)。Is True选项允许你设置一个布尔类型的条件,当调试器计算条件为真的时候,会自动中断到指定代码行。“已更改”(Has Changed)选项告诉调试器在调试中当表达式的值发生改变时,调试器将会在断点处停住。编译器第一次编译时,为表达式赋初值。如果在这之后,表达式的值改变了,编译器会在断点处中断。当某个字段或是某个属性有初值,同时你想跟踪这个初值什么
12、时候被改变了,这个功能将很有用。在1.3节的例子中,我们将通过例子直观的讲解这两种中断情况。4.设置跟踪点通过跟踪点可以在执行到某个断点时,向Output(输出)窗口发送数据,或者运行一段Visual C+宏。可以显式地设置跟踪点,右击一行代码,然后从Breakpoint菜单中选择Insert Tracepoint选项,这时会弹出一个跟踪点属性窗口,如图1.1-4所示。通过设置,可以设置到达跟踪点时的动作属性。通过设置Print a message选项,应用程序在调试模式下运行,并且在遇到断点时向Output窗口输出一些你提前设置的希望得到的信息,比如异常抛出时的特定条件和进程ID等信息。通过
13、Continue execution选项,你可以决定这是一个真正的跟踪点还是一个包含跟踪点的断点。如果你选择继续,你就只能使用跟踪动作(消息或者宏)。如果你不选择继续,除了能够使用跟踪动作外,调试器将会在执行到该行的时候中断。最后,如果你选择Run a macro选项,对话框将会列出你的环境中加载的所有的宏,你可以选择在执行到跟踪点时要执行哪个。图表 2.23跟踪点属性设置对话框5.Visual C+ 2010的断点标识,如表1.1-2所示表格 2.21 Visual C+ 2010断点标识标准的,启用的普通断点,程序执行到此时会发生中断高级断点,包括上文所述的条件断点跟踪点,程序运行到此,将
14、执行与该跟踪点提前设定的动作高级跟踪点,例如条件跟踪点等3. 用于示例的代码下面我们将用一个简单的小例子形象直观的讲解一下Visual C+ 2010的基本的调试过程。该示例代码的功能为从键盘上读入两个整数,对这两个整数进行交换,再从键盘上读入一个整形数组,对数组中的元素进行翻转,将其输出。头文件Array.h#ifndef _ARRAY_H_#define _ARRAY_H_void ReadVar(int &a, int &b);void Writevar(int a, int b);void Reverse(int &a, int &b);void Rea
15、dArray(double nums, const int size);void WriteArray(double nums, const int size);void Reverse(double nums,const int size);#endifC+文件Array.cpp#include "stdafx.h"#include "Array.h"#include <iostream>using namespace std;int main()/demo 1: swap two intergerint x = 0, y = 0;Read
16、Var(x,y);Reverse(x,y);Writevar(x,y);/demo 2 : reverse an arraydouble v5;ReadArray(v,5);Reverse(v,5);WriteArray(v,5);return 0;void ReadArray(double nums,const int size)for(register int i = 0;i < size; +i)cout << "nums" << i << " = "cin >> numsi;void Writ
17、eArray(double nums,const int size)for(register int i = 0; i <size; +i)cout << numsi << 'n'void Reverse(double nums,const int size)double temp;for(register int i = 0; i<size/2; +i)temp = numsi;numsi = numssize - i - 1;numssize - i - 1 = temp;void ReadVar(int &a ,int &
18、;b) cout <<"Please input two integer :"cin >>a>>b;void Writevar ( int a,int b) cout <<"a="<<a<<"t"<<"b="<<b<<endl;void Reverse ( int &a,int &b) int temp;temp = a;a = b;b = temp;4. 调试的基本流程4.1. 断点调试4.
19、1.1 设置普通断点将光标首先定位到需要设置断点的代码行,鼠标单击Debug->Toggle Breakpoint选项,即可在光标所在位置的代码行设置一个断点,此例中我们选择在WriteArray函数循环语句中的打印语句处设置断点,如图1.3-1所示图表 4.11设置普通断点示意图选择Debug->Start Debugging选项,重新编译链接源代码,可见程序运行到断点位置发生中断。运行结果如下所示:Please input two integer :1 2a=2 b=1nums0 = 1nums1 = 2nums2 = 3nums3 = 4nums4 = 54.1.2 设置条件
20、断点在上图所示的断点的小红点图标上单击鼠标右键,选择Condition选项,在弹出的Breakpoint Condition对话框中设置条件断点的中断条件。选中Conditon选项框,选择Is true选项,在文本框中输入i=3,点击OK按钮,如图1.3-2所示图表 4.12 条件断点设置示意图1循环语句中的局部计数变量i=3为真时,程序在断点处发生中断,运行结果如下所示:Please input two integer :1 2a=2 b=1nums0 = 1nums1 = 2nums2 = 3nums3 = 4nums4 = 5543在Breakpoint Condition对话框中选择中
21、断条件为Has changed选项,在文本框中输入变量i,点击Ok按钮,如图所示图表 4.13条件断点设置示意图2编译器第一次编译时,为表达式赋初值i=0,循环语句中的局部计数变量i的值发生变化时,即从i=0变为i=1时,程序在断点处发生中断,运行结果如下所示:Please input two integer :1 2a=2 b=1nums0 = 1nums1 = 2nums2 = 3nums3 = 4nums4 = 554.2. 单步调试与查看变量值1. 取消上一小节设置的断点,在主函数中的WriteArray函数处设置一个普通断点图表 4.21 WriteArray函数处设置普通断点2.
22、重新编译链接程序,给程序中的变量和数组分别赋值程序运行到断点处发生中断,进行单步调试Please input two integer :1 2a=2 b=1nums0 = 1nums1 = 2nums2 = 3nums3 = 4nums4 = 53. 点击工具栏Step Into,进入函数WriteArray函数进行单步调试,在WriteArray函数内部,为了避免进入系统函数cout中进行单步调试,点击Step over进行逐过程的单步调试,随着单步调试的进行,调试台会逐个打印出数组中的元素值。4. 监视用户指定变量的值及其数据类型,将鼠标悬浮在当前作用域的某个变量上,即可查看当前变量的数值
23、,对于数组来说,此时查看的始终是数组的第一个元素数值5. 点击Debug->Windows->Watch窗口,添加watch窗口,在watch窗口中添加需要查看的变量,查看具体变量的值及其数据类型,如图1.3-5所示,用户可同时创建多个watch窗口图表 4.22watch窗口查看变量示意图6. 点击Debug->QuickWatch,打开快速查看窗口查看变量的值,如图1.3-7所示,通过点击Add Watch可将当前查看的变量添加到Watch窗口中,点击Reevaluate选项,当前变量会被重新求值。图表 4.23 QuickWatch窗口示意图7. 当函数调试的过程中只想调试一部分代码时,点击Step out选项,调试器会继续执行当前的函数,然后在函数执行完成后跳出函数回到调试(中断)状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阳光房铝合金龙骨施工方案
- 2025至2030年中国岩棉缝毡数据监测研究报告
- 2025至2030年中国塑料门窗间隔条数据监测研究报告
- 养殖场平整工程施工方案
- 2025至2030年中国圆圆烫具数据监测研究报告
- 2025至2030年中国光纤绕线盘数据监测研究报告
- 2025年中国非标蒸发器市场调查研究报告
- 2025年中国绉类面料市场调查研究报告
- 2025年中国挤出机用旋转接头市场调查研究报告
- 2025年中国吡喃市场调查研究报告
- 个人投资收款收据
- 建材行业较大风险识别与防范手册
- 2024年01月2023年上海证券交易所社会招考聘用笔试历年高频难、易错考点带答案解析
- 工艺能力分析报告
- 淋巴瘤的治疗及护理
- 健身房众筹方案
- 护理带教汇报课件
- 基于学生主体的整本书阅读-《钢铁是怎样炼成的》(一等奖创新教学设计)
- 苏教版五年级数学下册100道口算题大全(全册)
- (完整word版)高中英语3500词汇表
- 社会政策概论课件
评论
0/150
提交评论