当前位置:文档之家› C语言调试方法

C语言调试方法


World”application,然后点击“Finish” ,如图 0-7 所示。
图 0-6 创建工程后的界面
图 0-7 创建一个类似于输出 Hello,World 的工程
系统创建工程后, 在工作空间的 ClassView 视图中, 打开 “类树” 中的 Global, 可以见到主函数 main,双击主函数 main,系统打开相应的源文件(与工程名同, 扩展名为 cpp),如图 0-8 所示。可以更改这个源文件代码为自己的程序。 注意:更改时,不要将编译命令“ #include "stdafx.h" ”丢掉。 注意:方法 1 和方法 2 的区别有两点:1)方法 1 没有建立任何文件此后 可以添加.c 的源文件,也可以添加.cpp 源文件;2)方法 2 建立了程序框架和一 个带主函数的.cpp 源文件。 ..c 的源文件使用 c 编译器,.cpp 文件使用 C++的编 译器,二者是有区别的。 二、添加源程序 1. 源文件的添加
2. 建立工程 方法一:建立空的工程后添加源文件。 启动 VC 环境后,选择“File”菜单中的“New”项,弹 出图 0-3 所示的对话框。 其标签项自动选择为 “Projects” (工 程)。作为初学者,在左侧的列表中选择倒数第 3 项“Win32 Console Application” (win32 控制台应用), 在右侧 “Project Name”文本框中输入欲建立的工程名称,如:Example01。在 “Location” (位置)中选择工程的存放位置(最好为课程建一个总文件夹),点击 “OK” ,系统出现建立工程的导航对话框,如图 0-4 所示。
控制台程序窗口。
图 0-15 程序运行的控制台窗口 口口 四、调试程序 1.跟踪程序的运行 下面以程序 3 为例,看看如何跟踪程序的运行。该程序 的功能是计算一个拱形门的面积,最后输出拱形门的面积和 高。如图 0-16,假定拱形门是由半圆和正方形相接组成。 /* 程序 3 */ w #include"stdio.h" #define PI 3.14159 void main() 图 0-16 拱形门 { float w,area,heigh; printf("本程序计算拱形门的面积和高,请输入拱形门的宽度\n"); scanf("%f",&w); area=(float)PI*w*w/2.0; area=area+w*w; printf("宽度为%.3f 的拱形门面积为:%.3f\n",w,area); heigh=w+w/2; printf("拱形门高度为:%.3f\n",heigh); } 调试程序的方法主要以单步执行程序为主, 也可以采用设置断点的方法, 依 次运行到断点之处。无论是单步还是设置断点,都是为了观察变量的内部状态, 结合窗口的输出,判断程序是否按照预定的逻辑正确执行。 跟踪程序运行的技术主要有使用功能键 F5、F10、F11 和设置断点。F10 的 作用是单步执行一条语句,但是不跟踪进入所调用的函数(若有的话),这叫做 “step over”——单步越过(越过),而 F11 的作用是单步执行,遇到函数调用 时,程序执行点进入函数,这叫做“step into”——单步进入(步入)。F5 的功 能是从程序当前执行点开始一直向后执行,直到遇到断点,或执行到程序结束。 F5 常常配合断点的使用。 建立工程、输入程序、编译无误后,按 F10 键,并再按 2 次 F10 键,集成环 境的界面如图 0-17,对应程序高级语言源程序的控制台窗口见图 0-18.
在图 0-9 中,选择“C++Source Files”(C++源文件),在右边的 File 文本 框中填写文件名(一定要带有扩展名,.c 或.cpp,它们的编译器不同),然后单 击“OK” ,系统为使用者建立源文件并打开,右边的文本编辑区,就是展示源文 件内容的窗口。 图 0-10 是为工程 example01 添加了源文件 exam01.c 后,并展开 了 Source Files 文件夹(单击其前面的“+”号)后的界面。
键入此程序后,经编译,在输入窗口中得到编译错误信息,如图 0-14 所示。 其中指出,程序有两处错误,3 处警告。信息较长较多时,可以滚动水平和 垂直滚动条,来查看某条信息。也可以双击其中某个信息,使信息出现在最下边 (蓝底白字部分)。 双击某个信息的同时, 在编辑框的左边框的对应行上, 将出现一个蓝色箭头, 指明出错的位置。 错误信息的格式是: 源文件路径文件名(行号):错误类别 错误代号:错误对象名:错误原因。 如: e:\example02\exam02.c(3) : error C2065 : ‘area’ : undeclared indentifer. 是说: 源文件 exam02.c 的第 3 行,有错误,错误代码是 C2065,即’area’错误, 原因是标识符没有定义。 查其代码行可知,由于在变量 r 与 area 之间使用了分号。原本打算将它们 都定义为 float 型,应该使用逗号。使用分号将使 area 失去类型。
图 0-5 创建工程的信息
在图 0-6 中,窗口左侧为“Workerspace”(工作空间)窗口,下部窗口为 “Output”(输出)窗口。在 workerspace(工作空间)窗口中有两个视图标签: ClassView(类视图)和 FileView(文件视图)。前者按照 C++ “类”的管理方式展 现 C/C++的源代码,后者按照文件的组织方式展现 C/C++的源代码。点击标签的 名称,可以在二者之间切换显示。 接下来的操作是为工程增加一个源文件,具体步骤见第二节。 方法 2:建立框架工程后更改源文件 在建立工程,系统弹出建立工程的导航对话框后,选择第 3 项,A“Hello,
文本选择 除了用鼠标拖动选择外,双击选择可以选择一个词汇(变量名、 函数名等);如果打算选择单行代码,可以在文本窗口左侧的边框上、该行的前 面单击鼠标左键,即可完成单行的选择,如图 0-12 所示。如果打算选择多行, 可在窗口左侧的边框上,按下鼠标左键进行拖动。
ቤተ መጻሕፍቲ ባይዱ
图 0-11 源文件的缩进书写方式 全文操作 全 文选择可以使用快捷键 ctrl+a。 全文缩进 整个源程序按照格式进行缩进可以使用快捷键 alt+F8,当然,必 须事先选择全文。 取消与恢复 前次的操作可以用快捷键 ctrl+y 取消;而刚刚被取消的操作可以用快捷键 ctrl+z 恢复。 三、编译与运行 1. 编译 当将程序 1 键入之后,可点击菜单“build”中 的“Rebuild All” ,系统会对源文件及整个工程进行 编译,编译完成后再进行连接,最终生成可执行程序(.exe)。也可以点击菜单第 2 项或按 F7 生成可执行程序。如图 0-13 所示。 系统进入编译时,在下面将出现 output 窗口,其中给出编译和链接过程中 的语法检查信息。如果有错,给出错误信息。这些信息包括错误行、类别 错误 代号:错误对象名:错误原因。 2. 排除语法错误 编译的一项任务就是排除程序中的语法错误, 下面以一个计算圆的面积的程 序(程序 2a)为例,说明 VC6.0 对基本语法错误的检查。 /* 程序 2a */ void main() { float r; area; printf("本程序计算圆的面积,请输入圆的半径\n"); scanf("%f",&r); area=PI*r*r; printf("半径为%.3f 的圆面积为:%.3f\n",r,area); }
图 0-14 程序 2 的编译输出信息
另一个错误是标识符 PI, 本意是 PI 作为符号常量, 程序中漏写了#define PI 3.14159。而关于 prinft 和 scanf 的警告是由于没有包含头文件 stdio.h。 最终将程序改正为程序 2b,则可以通过编译。 /* 程序 2b */ #include"stdio.h" #define PI 3.14159 void main() { float r,area; printf("本程序计算圆的面积,请输入圆的半径\n"); scanf("%f",&r); area=(float)PI*r*r; printf("半径为%.3f 的圆面积为:%.3f\n",r,area); } 注意:警告级错误不会停止编译,可以连接,也可以执行程序。而错误是 必须要改正的。作为编程经验,除非错误明显,一般每改正第 1 个错误后就要再 进行编译。若还有错,再改正第 1 个错误,...,直至排除全部错误。在错误列 表中, “后面的”错误往往是前面的错误造成的,改了前面的错误,后面的错误 有些也会跟着消逝。但有时改了前面的错误后,可能会出现更多的错误,遇到这 种情况不要轻易怀疑是否前面改错了,因为可能是在改正后,下面的程序面又出 现了更严重错误,而这个错误又引起了更多的新错误。 3. 运行程序 在图 0-13 所示的 build 菜单中, 有一个带有叹号图标的菜单项——Execute (执行)example01.exe, (其快捷方式为 Ctrl+F5) ,点击它,或者按 Ctrl+F5 就 可以直接运行程序。如图 0-15 就是运行时的控制台窗口。 要运行程序,还有另一个方法。它与上述方法不同,叫做调试运行,在图 0-13 build 菜单中的 Start Debug(开始调试)子菜单中。这种运行方法适于分步 调试程序,观察程序内部运行状况,排除错误逻辑。这样方法将在以后各章节的 调试习题中加以介绍。 不过两种运行程序方法的区别是,前者运行完程序后,控制台窗口等待按任 意键关闭, 让程序结果停留在窗口画面上。而后者则在程序运行完毕后直接关闭
按照方法一建立工程后,整个工程是一个完全空的架子,没有任何源文件。 此时,单击菜单“File” ,再次选择“New” ,系统弹出与图 0-3 一样的对话框, 不过,此时的对话框默认的标签是“Files” ,如图 0-9 所示。
相关主题