实验4:Linux C语言编程和调试

合集下载

linux实验报告3 Linux上C程序编译,调试和工程文件管理

linux实验报告3 Linux上C程序编译,调试和工程文件管理

深圳大学实验报告课程名称:Linux操作系统实验项目名称:Linux上C程序编译,调试和工程文件管理学院:计算机与软件学院专业:软件工程指导教师:冯禹洪报告人:文成学号:2011150259 班级:02 实验时间:2013/12/31实验报告提交时间:2013/12/31教务处制一、实验目标:熟悉Linux上C程序设计环境,包括以下内容:1. 联机帮助man命令2. 编译工具gcc的使用3. 熟悉使用gdb来调试程序4. 熟悉C工程文件的管理工具makefile二、实验环境与工件湖边Linux实验室Fedora 13三、实验内容与步骤1.动态库函数可以在多个应用程序之间共享,可以减少应用程序文件的容量和应用程序的装载时间。

因此,熟悉构建动态库可以提高软件的编写质量。

请跟随以下步骤构建动态库message,并用其编写程序、编译和运行。

(40分)1.1编写源程序message.c(见图1)和main.c(见图2)图1. message.c源程序图2.main.c源程序1.2用以下命令对message.c进行编译,其中,“-fPIC”选项是告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。

1.3以上命令将获得目标文件message.o,使用以下命令建立共享函数库message:1.4使用1.3获得的共享函数库来编译main.c文件1.5设置共享函数库搜索路径1.6运行程序并附上结果1.7构建静态可执行程序1.7.1$gcc –c message.c1.7.2$ar –crv libmsg.a message.o1.7.3$gcc –o main main.c –L./ -lmsg1.7.4$./main1.8运行以下两个命令并截图说明结果:$ldd goodbye$ldd main$ls –l goodbye main/*附加题:经观察,如果用ubuntu, main 和googbye的大小在一些发行版本下没有区别,如果实验如此,请尝试解释这一现象。

实验四Linux系统搭建C语言编程环境

实验四Linux系统搭建C语言编程环境

实验四Linux系统搭建C语⾔编程环境实验四 Linux系统搭建C语⾔编程环境项⽬内容这个作业属于哪个课程< >这个作业的要求在哪⾥<>学号-姓名<17043101-李绍斌>作业学习⽬标1.了解Linux系统C语⾔编程环境;2.学习Linux环境C语⾔开发步骤1.安装C语⾔开发环境查看gcc版本信息查看make版本2.简单C语⾔练习1)通过man查看gcc2)命令⾏模式简单C语⾔编译链接等操作我们可以通过vim编辑器编写⼀个最简单的C语⾔程序,如写⼀个输出⾃⼰学号的程序。

先创建⼀个⽂件夹,然后进⼊该新创建的⽂件夹。

输⼊完了源程序,接下来我们进⾏C语⾔程序编译的四个阶段,预编译,编译,汇编,链接。

a) 预编译b)****编译c) 汇编反汇编d)****链接可执⾏⽂件是⼆进制⽂件,同样需要⽤objdump命令来反汇编该⽂件分析⽂件内容e)****运⾏3)****多⽂件编译在E3101⽂件夹下⾯再建⼀个⽂件夹mfc(multi-files compile)在该⽂件夹下⾯创建5个⽂件,⽂件名分别如下:每个⽂件的内容分别如下:完成上⾯的代码输⼊,接下来我们进⾏编译,对于多⽂件编译,我们可以⼀次编译链接⽣成可执⾏⽂件,也可以分别编译每个C⽂件,最后再进⾏链接得到可执⾏⽂件。

问:请说明两种⽅法的区别?答:第⼀种没有⽣成⽬标⽂件,第⼆种⽣成了⽬标⽂件。

接下来编写⼀个简单的Makefile,通过make⼯具帮助我们进⾏编译。

在当前⽂件夹编写⼀个Makefile⽂件现在可以直接在终端输⼊make就可以进⾏编译链接操作。

Linux环境下 C语言编程实验报告

Linux环境下 C语言编程实验报告

西安邮电大学(计算机学院)课内实验报告实验名称: Linux环境下 C语言编程专业名称:网络工程班级:1203班学生姓名:学号(8位):指导教师:王亚刚实验日期:2014年12月3日一、实验目的(2)掌握gcc编译器使用方法。

(3)掌握gdb调试方法。

二、实验内容1.编辑测试源代码。

2. gcc编译测试源代码3. gdb调试和排错。

三、实验步骤1.编辑如下参考源代码,代码的原意为倒序输出main函数中定义的字符串#include <stdio.h>int display1(char *string);int display2(char *string);p iint main (){char string[] = "nnWelcom to Linux";display1 (string); display2 (string);}int display1 (char *string){printf ("The original string is %s \n", string);}int display2 (char *string1){char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size + 1);for (i = 0; i < size; i++)string2[size - i] = string1[i];string2[size+1] = ' ';printf("The string afterward is %s\n",string2);}2.使用gcc将参考源代码编译为可执行文件。

3.运行可执行文件,观察运行结果并记录。

4.使用gdb调试程序,通过设置断点、单步跟踪,找出错误原因并记录。

实验四 Linux下的C语言编程

实验四 Linux下的C语言编程

实验四L i n u x下的C语言编程四、实验内容本实验要求在 LINUX/UNIX 环境下用 C 语言编写三个具体的 SHELL 命令,基本涉及了 LINUX/UNIX 文件系统中较为常用的有关文件操作的系统调用。

内容如下:1、编程实现 copy 命令。

执行格式:copy file1file2file3功能:将 file1、file2 两文件的内容合并拷入 file3 中,其中间应有 30个字节的空洞(调试成功后可将空洞调大到几十MB)。

程序执行后用 du 命令显示其占用磁盘空间,观察其大小,分析原因。

程序可能涉及到的系统调用: read(), write(), open(), creat(),close(), lseek()#include <sys/>#include <sys/>#include <>#include <>#include <>#include <>#include <>int main(int argc, char const *argv[]){int file1,file2,file3;if (argc!= 4) {printf("Usage: copy file1 file2 file3\n");exit(1);}file1=open(argv[1],O_RDONLY);file2=open(argv[2],O_RDONLY);file3=open(argv[3],O_CREAT|O_RDWR,S_IRWXU);int n;char buf[1024];while (( n=read(file1,buf,1024))>0)if (write(file3,buf,n)!=n)printf("write error\n");if (n<0)printf("read %s error\nErrno= %d\n",argv[1],errno);if (lseek(file3,30,SEEK_END)==-1)printf("lseek error ");while (( n=read(file2,buf,1024))>0)if (write(file3,buf,n)!=n)printf("write error\n");if (n<0)printf("read %s error\nErrno= %d\n",argv[2],errno);exit(0);close(file1);close(file2);close(file3);printf("success\n");return 0;}2、编程实现 renam(即 LINUX 下的 rename)命令,功能是实现文件的重命名。

linux下C语言使用编译与调试试验

linux下C语言使用编译与调试试验
用run命名运行greet,欲行结果如下:
运行结果和外面的运行结果一样,同样没有反序输出,用list命令列出源代码:
在24行设置一个断点:
再次输入run命令,结果如下图:
能通过设置一个观察string2[size-1]变量值得观察点来查看错误是怎么产生的,输入如下指令:
用next命令一步步执行for循环,如下图:
#include "function2.h"
int main(int argc, char **argv)
{
function1_print("hello");
function2_print("world");
return 0;
}
//function1.h
void function1_print(char *str);
运行:./gdbtest1
开始调试:gdbgdbtest1
#include <stdio.h>
int add_range(int low, int high)
{
static int i,sum;
for(i=low; i<=high; i++)
sum = sum +i;
return sum;
}
int main(void)
{
unsigned long long res=1;
if (y==0)
res = 1;
else if (y==1)
res = x;
else
res = x * mypow(x, y-1);
return res;
}
powtest.c:调用mypow()函数

实验4 Linux程序开发基础

实验4 Linux程序开发基础

实验4 Linux程序开发基础一、实验目的:1.继续熟悉Linux终端命令;2.继续学习使用Vi编辑器;3.学习使用Linux环境下C语言程序的编译。

4.调试器Gdb的使用二、实验要求:完成实验内容并写出实验报告,报告应具有以下内容:1.实验目的。

2.实验内容。

3.实验过程、实验结果截屏。

4.实验过程中出现的问题及解决方法。

5.实验体会。

三、实验内容:1.使用Vi文本编辑器编写c语言程序。

2.学习使用C编译程序gcc3.使用调试器Gdb来调试程序四、实验步骤:1、以超级用户root登录系统,以自己名字新建一个用户,并用该用户重新登录系统。

2、创建C语言文件:使用vi编辑器在各自的目录下创建一简单C语言程序(文件名为first,扩展名为.c),程序内容为在屏幕上打印一行英文,英文字母自定,要求每个同学不同。

(提示:C语言中打印命令为printf)3、编译C语言程序:要求掌握Linux中最常用的C编译程序gcc的使用。

命令:gcc命令格式:gcc 【选项】文件列表该命令用于调用C编译系统。

当命令执行后,它依次进行预处理,编译,汇编,链接,最后产生可执行代码。

默认情况下,可执行代码放在a.out文件中。

例:gcc first.c//对文件first.c进行编译,编译通过后的话没有任何显示,产生默认的可执行文件a.out(用ls命令可以查看到该文件,该文件显示为绿色)。

可执行文件可以直接在提示符后输入文件名运行。

如:#a.out 回车将显示结果编译没有通过的话将显示出错的行数和信息。

gcc first.c –o hello//gcc命令带上选项–o表示对文件first.c进行编译,编译通过后,将可执行代码存放在指定的文件hello中(hello名字由用户定)。

现要求每个同学使用gcc对自己所编写的first.c程序进行编译并执行。

所产生的可执行文件命名为hello。

如果可执行文件不能直接运行,在可执行文件前加上. /,表示当前目录的意思4、编写如下c语言程序,使用循环语句从1加到100,并练习调试器Gdb的使用(设置断点并单步调试)调试器Gdb的用法:Linux系统中标准调试器是gdb,它可用来调试C、C++、Java等程序。

linux下c程序的编写实验报告

linux下c程序的编写实验报告实验主题:在Linux下编写C程序的实验报告一、引言(150-200字)Linux是一种广泛应用的操作系统,具有高度开放性和灵活性,也是许多程序员首选的开发环境。

在Linux中,通过编写C程序可以实现各种应用和功能。

本实验旨在通过一步一步的说明和回答,介绍在Linux下编写C 程序的基本步骤和方法。

二、实验步骤(400-500字)1. 设置编程环境在Linux中编写C程序,首先需要安装相关的开发工具和编译器。

常用的编译器有gcc和clang,可以通过包管理器进行安装。

同时,也需要一个文本编辑器来编写C代码,比如vim或者emacs。

2. 编写Hello World程序Hello World程序是C语言学习的经典入门程序,它可以在屏幕上输出"Hello World"。

在文本编辑器中新建一个文件,命名为hello.c,然后在文件中输入以下代码:#include <stdio.h>int main() {printf("Hello World\n");return 0;}保存文件后,使用gcc编译器将该文件编译成可执行文件。

在终端中执行以下命令:gcc -o hello hello.c此时会生成一个名为hello的可执行文件。

通过执行该文件,可以在终端中看到输出结果"Hello World"。

3. 命令行参数和用户输入C程序可以接受命令行参数和用户输入,从而实现更复杂的功能。

在上一步编写的程序的基础上,我们尝试接收用户输入的姓名,并输出相应的问候语。

在hello.c文件中添加以下代码段:#include <stdio.h>int main(int argc, char *argv[]) {char name[100];printf("Please enter your name: ");scanf("s", name);printf("Hello, s!\n", name);return 0;}重新编译程序并执行,可以看到在终端中会提示用户输入姓名,并输出相应的问候语。

实验四 Linux下的C语言编程以及GCC工具的使用

实验四Linux下的C语言编程以及GCC工具的使用【实验目的】了解Linux下的用户管理机制,熟练掌握Linux下的C语言编程以及GCC工具的使用。

【预备知识】复习C/C++语言的基本技能、用户管理知识和GCC使用的内容。

【实验要求】Linux系统管理的一项重要工作就是用户管理。

用户的口令以加密的形式存储在/etc/shadow文件中.弱口令就是很容易被猜出来的口令,比如与用户名相同的口令、常用的单词口令等。

管理员应该定期检测系统中是否存在弱口令。

试编写一个C语言程序,主动检查自己的Linux系统中是否存在弱口令。

【实验步骤】1)分析/etc/shadow文件的格式。

可以查看自己的系统中该文件的格式,根据8.1节的介绍,该文件的每一行对应一个用户,下面是一个系统中/etc/shadow文件的实例:root:$1$j33ff543SWQ/C7Swn6jR9xyfoEcLaS.:12912:0:99999:7:::bin:*:12834:0:99999:7:::daemon:*:12834:0:99999:7:::2)了解Linux下口令加密的原理。

口令的加密是使用Linux系统的crypt函数实现的。

使用info或者man可以了解该命令的工作原理。

它使用包含12个字符的字符串作为种子salt,将用户输入的口令key进行加密pwd=crypt(key.salt),将所得的包含34个字符的字符串存入,etc,shadow文件的第2个字段,这34个字符的前12个就是salt。

当给用户设置口令时,种子是由系统随机选取的。

当用户在登录界面中输入自己的口令时,系统使用crypt进行上述计算,如果所得的结果与/etc/shadow中存储的一致,则允许用户登录。

3)检查弱口令。

弱口令就是很容易被猜出来的口令。

比如admin、guest、fllower、123456、beauty等。

在口令猜测或者破解时,一般不会穷尽所有字符的所有排列组合,一般使用弱口令字典,字典中包含常被用来作为口令的字符串。

Linux下c语言编程实验讲义

课程名:Linux下c语言编程专业:08嵌入式系统工程专试验1:Linux系统基本shell指令试验2:gcc编译器与多文件交叉包含试验3:库文件的创建与使用试验4:linux系统程序调试-行列式求值程序试验5:进程与线程程序调试试验6:TCP程序与试验7:UDP程序试验1 Linux系统基本shell指令实验一Linux系统基本文件操作试验目的:掌握Linux系统常见的文件操作指令;掌握Linux系统常见的文件形式;试验设备PC机、虚拟机、redhat9,桌面环境KDE试验原理一、Linux系统常见的文件形式(一)为便于用户识别文件形式,操作系统一般使用扩展名来标示文件类型。

文件扩展名是文件名的最后一个点之后的部分(在文件sneakers.txt中,“txt”是文件的扩展名)。

下面简单列出了一些文件扩展名和它们的含义:1. 压缩的和归档的文件.bz2 —使用bzip2 压缩的文件.gz —使用gzip 压缩的文件.tar —使用tar(tape archive,磁带归档的简写)压缩的文件,又称tar 文件.tbz —用tar 和bzip 压缩的文件.tgz —用tar 和gzip 压缩的文件.zip —使用ZIP 压缩的文件,在MS-DOS 应用程序中常见。

多数为Linux 压缩的文件使用gzip 压缩,因此Linux 文件中的.zip 归档较少见。

2. 文件格式.au —音频文件.gif —GIF 图像文件.html/.htm —HTML 文件.jpg —JPEG 图像文件.pdf —文档的电子映像;PDF 代表Portable Document Format(可移植文档格式).png —PNG 图像文件(Portable Network Graphic 的简写,可移植网络图形).ps —PostScript 文件,为打印而格式化过的文件.txt —纯ASCII 文本文件.wav —音频文件.xpm —图像文件3. 系统文件.conf —一种配置文件。

Linux下C语言程序的编译与调试实验报告

Linux下C语言程序的编译调试实验学院:电子信息工程学院专业:通信工程*名:***学号:********指导老师:周围老师完成时间:2013年6月3日一、实验目的1. 熟悉Linux下C语言编译调试环境。

2. 学会使用gcc编译C程序。

3. 学会使用gdb调试C程序。

二、实验内容1. 在Linux下,编写程序factorize.c,功能如下:输入一个int型整数,输出其因式分解结果。

2. 编译运行,生成可执行文件。

3. 用gdb调试该程序,找到错误并修改。

三、实验软件环境GCCGCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。

GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。

GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。

GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。

GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。

GCC很快地扩展,并支持处理C++。

后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。

GDBGDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。

或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。

所谓“寸有所长,尺有所短”就是这个道理。

一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。

(断点可以是条件表达式)。

3、当程序被停住时,可以检查此时你的程序中所发生的事。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告4课程名称:Linux基础实验名称:Linux C语言编程和调试学生姓名:班级:学号:指导老师:钱振江成绩:一、实验目的1.掌握Linux环境下C程序的编辑、编译、运行等操作;2.掌握多文件的编译及连接;3.初步掌握gdb调试方法;二、实验任务与要求1.在Linux环境下C程序的编辑、编译与运行;2.多文件的编译及连接;3.应用gdb调试程序;4.随机数的应用;三、实验工具与准备计算机PC机,Linux Ubuntu操作系统四、实验步骤与操作指导1.调试下列程序。

程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。

这两个函数分别是pro1和pro2。

按下面步骤生成函数库及测试函数库。

步骤1 为两个函数分别创建各自的源文件(将它们分别命名为pro1.c和pro2.c)。

[root@localhost root]# vi pro1.c#include <sdtio.h>void pro1(int arg){printf(“hello:%d\n”,arg) ;}[root@localhost root]# vi pro2.c#include <sdtio.h>void pro2(char *arg){printf(“您好:%s\n”,arg) ;}步骤2 分别编译这两个文件,生成要包含在库文件中的目标文件。

这通过调用带有-c 选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。

如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。

[root@localhost root]# gcc -c pro1.c pro2.c[root@localhost root]# ls *.opro1.o pro2.o步骤3 现在编写一个调用pro2函数的程序。

首先,为库文件创建一个头文件lib.h。

这个头文件将声明库文件中的函数,它应该被所有希望使用库文件的应用程序所包含。

[root@localhost root]# vi lib.h/*lib.h:pro1.c,pro2.c*/void pro1(int);void pro2(char *);步骤4 创建主程序program.c,它包含库的头文件并且调用库中的一个函数。

[root@localhost root]# cat program.c#include “lib.h”int main(){pro2(“Linux world”);exit(0);}步骤5 编译并测试程序。

暂时为编译器显式指定目标文件,然后要求编译器编译文件并将其与预先编译好的目标模块pro2.o链接。

[root@localhost root]# gcc -c program.c[root@localhost root]# gcc -o program program.o pro2.o[root@localhost root]# ./program您好:Linux world步骤6 创建并使用一个库文件。

用ar程序创建一个归档文件并将目标文件添加进去。

这个程序之所以称为ar,是因为它将若干单独的文件归并到一个大的文件中以创建归档文件。

注意,也可以用ar程序来创建任何类型文件的归档文件。

[root@localhost root]# ar crv libfoo.a pro1.o pro2.o函数库现在即可使用。

可以在编译器命令行的文件列表中添加该库文件以创建程序,如下所示:[root@localhost root]# gcc -o program program.o libfoo.a[root@localhost root]# ./program您好:Linux world也可以用“-l”选项来访问函数库,但是因为其未保存在标准位置,所以必须用-L选项来指示gcc在何处可以找到它,如下所示:[root@localhost root]#gcc -o program program.o -L. -lfoo-L.选项指示编译器在当前目录“.”中查找函数库。

“-lfoo”选项指示编译器使用名为libfoo.a的函数库(或者名为libfoo.so的共享库,如果它存在的话)。

要查看目标文件、函数库或可执行文件里包含的函数,可以使用nm命令。

如果查看program和libfoo.a,就会看到函数库libfoo.a中包含pro1和pro2两个函数,而program里只包含函数pro2。

创建程序时,它只包含函数库中它实际需要的函数。

虽然程序中的头文件包含函数库中所有函数的声明,但这并不将整个函数库包含在最终的程序中。

问题思考:(1)按照给出的步骤1-6调试程序;(2)编写两个函数,其中一个求数组中的最大值与最小值,另一函数求某一数组的元素个数及main函数,建立一个库。

主程序调用这两个函数,对程序进行调试并记录实验结果。

2.调试下列程序。

设计一个程序,要求输入两个整数,输出两个整数间的所有自然数。

步骤1 编辑源程序代码。

[root@localhost root]#vim main.c程序代码如下:#include <stdio.h>int num(int x, int y);int main(){int a1,a2,min_int;printf("请输入第一个整数:");scanf("%d",&a1);printf("请输入第二个整数:");scanf("%d",&a2);num(a1,a2);}int num(int x, int y){int temp,i;if (x>y){temp=x;x=y;y=temp;}for(i=x;i<=y;i++)printf(“%5d”,i);printf(“\n”);return 0;}步骤2 用gcc编译程序。

在编译的时候要加上选项“-g”。

这样编译出的可执行代码中包含调试信息,否则之后gdb无法载入该可执行文件。

[root@localhost root]# gcc main.c -o main -g步骤3 进入gdb调试环境。

gdb进行调试的是可执行文件,因此要调试的是main而不是main.c,输入如下:[root@localhost root]#gdb main回车后就进入了gdb调试模式,如图4-1所示。

GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)Copyright 2003 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.Type "show copying" to see the conditions.There is absolutely no warranty for GDB. Type "show warranty" for details.This GDB was configured as "i386-redhat-linux-gnu"...(gdb)图4-1 进入gdb调试环境可以看到,在gdb的启动画面中有gdb的版本号、使用的库文件等信息,在gdb的调试环境中,提示符是“(gdb)”。

步骤4 用gdb调试程序。

(1)查看源文件在gdb中输入“l”(list)就可以查看程序源代码,一次显示10行。

可以看出,gdb列出的源代码中明确地给出了对应的行号,这样可以大大方便代码的定位。

(2)设置断点设置断点在调试程序时是一个非常重要的手段,它可以使程序到一定位置暂停运行。

软件工程师可以在断点处查看变量的值、堆栈情况等,从而找出代码的问题所在。

在gdb中设置断点的命令是“b”(break),后面跟行号或者函数名。

不指定具体行号的断点设置在“b”(break)后面跟函数名。

本例可以输入“break num”。

(3)查看断点信息设置完断点后,可以用命令“info b”(info break)查看断点信息。

(4)运行程序接下来可以运行程序,可以输入“r”(run)开始运行程序。

(5)查看与设置变量值调试程序重要手段就是查看断点处的变量值。

程序运行到断点处会自动暂停,此时输入“p变量名”可查看指定变量的值。

调试程序时,若需要修改变量值,可程序运行到断点处时,输入“set 变量=设定值”,例如,给变量“a2”赋值100,输入“set a2=100”。

gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再引用此变量,可以直接使用“$n”,提高了调试效率。

(6)单步运行很多情况下,调试的时候要单步运行程序。

在断点处输入“n”(next)或者“s”(step)可单步运行。

它们之间的区别在于:若有函数,调用时,“s”会进入该函数,而“n”不会进入该函数。

(7)继续运行程序在查看完变量或堆栈情况后可以输入“c”(continue)命令恢复程序的正常运行,把剩余的程序执行完,并显示执行结果。

(8)退出gdb环境退出gdb环境只要输入“q”(quit)命令,回车后退出gdb环境。

3.调试下列程序。

产生10个介于1到10之间的随机数值。

提示:函数rand( )会返回一个0~ RAND_MAX(其值为2147483647)之间的随机值。

产生一个大于等于0、小于1的数,此数可表示为:rand()/(RAND_MAX+1.0)。

操作步骤步骤1 编辑源程序代码。

[root@localhost root]#vim 4-3.c程序代码如下:#include <stdlib.h>#include "stdio.h"int main(){int i,j;srand((int)time(0));for(i=0;i<10;i++){j=1+(int)(10.0*rand()/(RAND_MAX+1.0));printf(" %d ",j);}printf(“\n”);}问题思考:(1)修改程序,产生50个100-1000之间的随机整数;(2)编写一个猜数游戏的程序,先产生一个随机数,要求测试者输入一个数,计算机会提示猜大了,猜小了或恭喜您猜中了,直到猜中,退出程序;。

相关文档
最新文档