C语言调试方法_第1页
C语言调试方法_第2页
C语言调试方法_第3页
C语言调试方法_第4页
C语言调试方法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言调试方法一、建立“工程”1. 启动VC+6.0安装好微软的Visual Studio 6.0 后,在系统的“开始”菜单的“程序”中可以启动Visual C+6.0,见图0-1。也可以在桌面上为菜单项Visual C+6.0建立一个快捷图标,如图0-2.所示。可选择这两个方法之一启动VC。2. 建立工程方法一:建立空的工程后添加源文件。启动VC环境后,选择“File”菜单中的“New”项,弹出图0-3所示的对话框。其标签项自动选择为“Projects”(工程)。作为初学者,在左侧的列表中选择倒数第3项“Win32 Console Application”(win32 控制台应用),在右侧“

2、Project Name”文本框中输入欲建立的工程名称,如:Example01。在“Location”(位置)中选择工程的存放位置(最好为课程建一个总文件夹),点击“OK”,系统出现建立工程的导航对话框,如图0-4所示。图0-3 创建控制台应用工程图0-4 创建工程的导航对话框在图0-4的导航对话框中选择默认的“An empty project”(空的工程),然后点击“Finish”(完成)。系统弹出相关的创建工程的信息,如图0-5所示。点击按钮“OK”后,系统创建工程,建立相关的文件夹,不过这些文件夹都是空的,系统界面类似于图0-6. 。图0-5 创建工程的信息在图0-6中,窗口左侧为“Wo

3、rkerspace”(工作空间)窗口,下部窗口为“Output”(输出)窗口。在workerspace(工作空间)窗口中有两个视图标签:ClassView(类视图)和FileView(文件视图)。前者按照C+ “类”的管理方式展现C/C+的源代码,后者按照文件的组织方式展现C/C+的源代码。点击标签的名称,可以在二者之间切换显示。接下来的操作是为工程增加一个源文件,具体步骤见第二节。方法2:建立框架工程后更改源文件在建立工程,系统弹出建立工程的导航对话框后,选择第3项,A“Hello,World”application,然后点击“Finish”,如图0-7所示。图0-6 创建工程后的界面图0-

4、7 创建一个类似于输出Hello,World的工程系统创建工程后,在工作空间的ClassView视图中,打开“类树”中的Global,可以见到主函数main,双击主函数main,系统打开相应的源文件(与工程名同,扩展名为cpp),如图0-8所示。可以更改这个源文件代码为自己的程序。F注意:更改时,不要将编译命令“ #include "stdafx.h" ”丢掉。F注意:方法1和方法2的区别有两点:1)方法1没有建立任何文件此后可以添加.c的源文件,也可以添加.cpp源文件;2)方法2建立了程序框架和一个带主函数的.cpp源文件。.c的源文件使用c编译器,.cpp文件使用C+

5、的编译器,二者是有区别的。二、添加源程序1. 源文件的添加按照方法一建立工程后,整个工程是一个完全空的架子,没有任何源文件。此时,单击菜单“File”,再次选择“New”,系统弹出与图0-3一样的对话框,不过,此时的对话框默认的标签是“Files”,如图0-9所示。图0-8 创建一个类似于输出Hello,World工程的系统界面图0-9 为工程建立源文件的对话框在图0-9中,选择“C+Source Files”(C+源文件),在右边的File文本框中填写文件名(一定要带有扩展名,.c或.cpp,它们的编译器不同),然后单击“OK”,系统为使用者建立源文件并打开,右边的文本编辑区,就是展示源文件

6、内容的窗口。图0-10是为工程example01添加了源文件exam01.c后,并展开了Source Files 文件夹(单击其前面的“+”号)后的界面。图0-10 工程添加源文件exam01.c后的界面双击文件名exam01.c,可以在右边的窗口打开这个文件。若为工程添加了多个文件,则每个打开的文件对应一个窗口,这个窗口代表源文件的文本区,可以在此编写程序。例如,编辑如下代码:/* 程序1 */#include ”stdio.h”void main() printf(“Hello,world!n”); printf(“计算机世界,我来了!n”);F注意:输入汉字后要及时切换回到西文输入方式,

7、因为C语言使用的n、引号、分号、括号等都是西文的。2. 程序源文件的快速编辑采用缩进方式:将程序1键入源文件,应当采用缩进方式,如图0-11所示的两个printf行,与大括号的垂直位置相比,位置缩进了。这种方式在输入时,自然回车就可以做到。以后的编程中,分支、循环语句中也应当使用缩进方式。这种“书写”方式使程序具备有层次的美感,增强逻辑感,让人容易阅读理解程序。积极使用windows的复制-粘贴 程序中表示变量、函数等等符号可以在多处大量出现,甚至一些语句也极其类似,因此,使用windows的剪贴板,可以减少击键的次数,解决快速输入的问题,还可以减少出现“两次键入的名称不同”的错误。使用剪贴板

8、,需要事先选定文本,其设计的方法有:光标定位:除了使用鼠标定位外,可以使用键盘上的光标移动键(箭头键)、home键、end键、快捷键等进行快速光标定位。键盘右侧区域的箭头键¬、®是水平(光标所在位置左右)移动一个字符。键盘右侧区域的箭头键­、¯是光标在垂直位置移动一行(上下行移动)。文本选择 除了用鼠标拖动选择外,双击选择可以选择一个词汇(变量名、函数名等);如果打算选择单行代码,可以在文本窗口左侧的边框上、该行的前面单击鼠标左键,即可完成单行的选择,如图0-12所示。如果打算选择多行,可在窗口左侧的边框上,按下鼠标左键进行拖动。图0-11 源文件的缩进

9、书写方式全文操作 全文选择可以使用快捷键ctrl+a。全文缩进 整个源程序按照格式进行缩进可以使用快捷键alt+F8,当然,必须事先选择全文。取消与恢复 前次的操作可以用快捷键ctrl+y取消;而刚刚被取消的操作可以用快捷键ctrl+z恢复。三、编译与运行1. 编译当将程序1键入之后,可点击菜单“build”中的“Rebuild All”,系统会对源文件及整个工程进行编译,编译完成后再进行连接,最终生成可执行程序(.exe)。也可以点击菜单第2项或按F7生成可执行程序。如图0-13所示。系统进入编译时,在下面将出现output窗口,其中给出编译和链接过程中的语法检查信息。如果有错,给出错误信息

10、。这些信息包括错误行、类别 错误代号:错误对象名:错误原因。2. 排除语法错误编译的一项任务就是排除程序中的语法错误,下面以一个计算圆的面积的程序(程序2a)为例,说明VC6.0对基本语法错误的检查。/* 程序2a */void main()float r; area;printf("本程序计算圆的面积,请输入圆的半径n");scanf("%f",&r);area=PI*r*r;printf("半径为%.3f的圆面积为:%.3fn",r,area);键入此程序后,经编译,在输入窗口中得到编译错误信息,如图0-14所示。其中指出

11、,程序有两处错误,3处警告。信息较长较多时,可以滚动水平和垂直滚动条,来查看某条信息。也可以双击其中某个信息,使信息出现在最下边(蓝底白字部分)。双击某个信息的同时,在编辑框的左边框的对应行上,将出现一个蓝色箭头,指明出错的位置。错误信息的格式是:源文件路径文件名(行号):错误类别 错误代号:错误对象名:错误原因。如:e:example02exam02.c(3) : error C2065 : area : undeclared indentifer. 是说:源文件exam02.c的第3行,有错误,错误代码是C2065,即area错误,原因是标识符没有定义。查其代码行可知,由于在变量r与are

12、a之间使用了分号。原本打算将它们都定义为float型,应该使用逗号。使用分号将使area失去类型。图0-14 程序2的编译输出信息另一个错误是标识符PI,本意是PI作为符号常量,程序中漏写了#define PI 3.14159。而关于prinft和scanf的警告是由于没有包含头文件stdio.h。最终将程序改正为程序2b,则可以通过编译。/* 程序2b */#include"stdio.h"#define PI 3.14159void main()float r,area;printf("本程序计算圆的面积,请输入圆的半径n");scanf("

13、;%f",&r);area=(float)PI*r*r;printf("半径为%.3f的圆面积为:%.3fn",r,area);F注意:警告级错误不会停止编译,可以连接,也可以执行程序。而错误是必须要改正的。作为编程经验,除非错误明显,一般每改正第1个错误后就要再进行编译。若还有错,再改正第1个错误,.,直至排除全部错误。在错误列表中,“后面的”错误往往是前面的错误造成的,改了前面的错误,后面的错误有些也会跟着消逝。但有时改了前面的错误后,可能会出现更多的错误,遇到这种情况不要轻易怀疑是否前面改错了,因为可能是在改正后,下面的程序面又出现了更严重错误,而这

14、个错误又引起了更多的新错误。3. 运行程序在图0-13所示的build菜单中,有一个带有叹号图标的菜单项Execute (执行)example01.exe,(其快捷方式为Ctrl+F5),点击它,或者按Ctrl+F5就可以直接运行程序。如图0-15就是运行时的控制台窗口。要运行程序,还有另一个方法。它与上述方法不同,叫做调试运行,在图0-13 build菜单中的Start Debug(开始调试)子菜单中。这种运行方法适于分步调试程序,观察程序内部运行状况,排除错误逻辑。这样方法将在以后各章节的调试习题中加以介绍。不过两种运行程序方法的区别是,前者运行完程序后,控制台窗口等待按任意键关闭,让程序

15、结果停留在窗口画面上。而后者则在程序运行完毕后直接关闭控制台程序窗口。图0-15 程序运行的控制台窗口口口图0-16 拱形门w四、调试程序1.跟踪程序的运行下面以程序3为例,看看如何跟踪程序的运行。该程序的功能是计算一个拱形门的面积,最后输出拱形门的面积和高。如图0-16,假定拱形门是由半圆和正方形相接组成。/* 程序3 */#include"stdio.h"#define PI 3.14159void main()float w,area,heigh;printf("本程序计算拱形门的面积和高,请输入拱形门的宽度n");scanf("%f&q

16、uot;,&w);area=(float)PI*w*w/2.0;area=area+w*w;printf("宽度为%.3f的拱形门面积为:%.3fn",w,area);heigh=w+w/2;printf("拱形门高度为:%.3fn",heigh);调试程序的方法主要以单步执行程序为主,也可以采用设置断点的方法,依次运行到断点之处。无论是单步还是设置断点,都是为了观察变量的内部状态,结合窗口的输出,判断程序是否按照预定的逻辑正确执行。跟踪程序运行的技术主要有使用功能键F5、F10、F11和设置断点。F10的作用是单步执行一条语句,但是不跟踪进入所

17、调用的函数(若有的话),这叫做“step over”单步越过(越过),而F11的作用是单步执行,遇到函数调用时,程序执行点进入函数,这叫做“step into”单步进入(步入)。F5的功能是从程序当前执行点开始一直向后执行,直到遇到断点,或执行到程序结束。F5常常配合断点的使用。建立工程、输入程序、编译无误后,按F10键,并再按2次F10键,集成环境的界面如图0-17,对应程序高级语言源程序的控制台窗口见图0-18.图0-17 程序3在集成环境的运行跟踪界面图0-18 配合图0-17,程序3在跟踪调试时的窗口界面在图0-17中,源程序窗口左边框上出现的黄色箭头,代表程序即将执行的语句(尚未执行

18、),可称之为程序当前执行点。由图0-17程序的当前执行点可见,程序已经输出一行信息,故有图0-17的执行结果。程序行将执行输入语句。在图0-17中,集成环境的下面是程序变量的显示窗口。可以见到,由于程序的当前运行点还没有执行给变量赋值语句,所以变量中的数据是混乱的。再次按F10,发现程序的运行点没有变化,这是因为程序正在执行输入语句,转向了控制台的操作,等待实际的输入,不输入数据,此语句就不能完成。此时编程者应当激活控制台程序窗口,并输入数据。例如输入10<回车>.输入回车后,控制再次回到集成环境,此时可以发现,如图0-19,变量窗口中变量w的数据变成了10,且为红色(红色说明刚刚

19、变化)。由此可断定,输入语句正确输入了数据。图0-19 变量的数据发生变化时的情景接下来2次按F10,变量area都发生了变化。程序当前执行点停在输出语句上。点击控制台窗口图标,激活控制台窗口,发现尚没有关于面积的输出。点击集成环境空白区,激活集成环境,再次按F10,程序当前执行点移到下条语句。激活控制台窗口后可以见到,面积信息已经输出。激活集成环境,用同样的方法(按F10键),可以执行计算拱形门高度的语句和输出语句。当程序的当前执行点执行到源文件的结束(最后一个右大括号)时,不能再使用F10键了,应当按F5键,否则,程序将跟踪进入系统内部代码。F注意:F5键的作用是从当前执行点开始一直运行到

20、程序结束或者遇到一个断点。由此可见,程序是逐条语句顺序执行的,这是一种基本运行模式。大家注意到,当使用上述几个功能键时,集成环境会出现一个新的工具栏,如图0-20,其各个图标的解释见图0-21.,其中大部分都有快捷键,当把鼠标停留在相应的按钮上时,相应的快捷键就会出现在提示中,在此不一一介绍。图0-20 程序调试命令工具栏程序复位(重新开始)停止调试打断连续的执行改变代码显示当前执行点单步进入( F11 )单步越过 (F10)退出函数(回到调用处)运行到光标处快速查看变量查看变量局部变量查看CPU寄存器查看内存查看调用堆栈查看反汇编代码图0-21 调试命令工具栏个按钮意义常用的仍然是中间几个,

21、使用F10或F11等与使用工具栏相应按钮是一样的。2. 排除逻辑错误逻辑错误的排除方法将放在后面各章中的样例或习题中。五、工程项目的保存与再启动当工程项目没有完成而需要暂停时,可以保存项目,以便以后续作。1) 保存工程点击“文件”菜单中的“Close Workspace”(关闭工作空间)或“Save Workspace”(保存工作空间)都可以保存工程,前者在没有保存时,给出提示保存。2) 打开工程点击“文件”菜单中的“Open Workspace” (打开工作空间),在出现的对话框中,选择正确的工程文件夹,后打开后缀为.dsw的文件。如图0-22所示。另一个打开已有工程的方法是,点击“文件”菜单中的“Recent Workspaces”(最近的工作空间),从列表中选择。第3个方法是在windows资源管理器中,找到并打开相应的工程文件夹后,双击后缀为.dsw的文件。用打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论