浙江大学Linux程序设计实验报告

上传人:无*** 文档编号:131940164 上传时间:2022-08-07 格式:DOC 页数:84 大小:4.50MB
返回 下载 相关 举报
浙江大学Linux程序设计实验报告_第1页
第1页 / 共84页
浙江大学Linux程序设计实验报告_第2页
第2页 / 共84页
浙江大学Linux程序设计实验报告_第3页
第3页 / 共84页
点击查看更多>>
资源描述
Linux程序设计实验报告1操作系统基本命令使用一、实验目的1通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法;2通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。二、实验任务与要求1emacs的使用,要求能新建、编辑、保存一个文本文件2vi或vim的使用,要求能新建、编辑、保存一个文本文件3gedit的使用,要求能新建、编辑、保存一个文本文件4掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录5掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。三、实验工具与准备计算机PC机,Linux Redhat Fedora Core6操作系统四、实验步骤与操作指导任务1学习emacs的使用,要求能新建、编辑、保存一个文本文件(1)启动emacs(2)输入以下C程序(3)保存文件为kk.c(4)用emacs打开文件kk.c(5)修改程序(6)另存为文件aa.txt并退出。任务2vi或vim的使用,要求能新建、编辑、保存一个文本文件(1)点击”应用程序” “附件”“终端”,打开终端,在终端输入命令:rootlocalhost root#vi kk.c按i键,进入插入状态。(2)输入以下C程序 #include int main( ) printf(“Hello world!n”); return 0;此时可以用Backspace、键编辑文本。(3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。(4)用vi打开文件kk.c,输入命令:rootlocalhost root#vi kk.c(5)修改程序为:#includeint main( ) printf( Hello world!n); printf(*n); return 0;(6) 按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。 图1 程序编辑环境任务3gedit的使用,要求能新建、编辑、保存一个文本文件(1)启动gedit,点击”应用程序” “附件”“文本编辑器”,打开文本编辑器,如图所示。(2)输入以下C程序(3)保存文件为kk.c(4)用gedit打开文件kk.c(5)修改程序(6)另存为文件aa.txt并退出。任务4掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录(1)打开终端”应用程序” “附件”“终端”,在终端用命令新建目录kkk rootlocalhost root#mkdir kkk(2)进入目录kkk,并在kkk目录下新建目录kkka,进入kkka目录 rootlocalhost root#cd kkkrootlocalhost kkk#mkdir kkkarootlocalhost kkk#cd kkkarootlocalhost kkka#(3)执行命令cd . 命令,然后再进入kkka目录,输入命令cd 、cd /etc,观察其结果。rootlocalhost kkka#cd .rootlocalhost kkk#cd kkkarootlocalhost kkka#cdrootlocalhost root#cd /etcrootlocalhost etc# 任务5掌握cp、ls、mv、chmod、rm命令的基本操作,要求能拷贝文件、新建文件、查看文件的权限、修改文件以及删除文件。(1)在kkka目录下建立文件kk.c rootlocalhost root#cd /root/kkk/kkka rootlocalhost kkka#vi kk.c(2)查看文件kk.c的属性 rootlocalhost kkka#ls kk.c -l 编辑kk.c文本,并用:wq存盘。(3)把kk.c更名为aa.c rootlocalhost kkka#mv kk.c aa.c(4)把文件夹/root/kkk/kkka下的文件aa.c拷贝到/root/kkk目录下,文件取名为kk.crootlocalhost kkka#cp aa.c /root/kkk/kk.c(5)修改文件kk.c的权限,使得文件所有者为可读、可写、可执行,对组内人及其他人可读、不可写、不可执行。rootlocalhost kkka#cd .rootlocalhost kkk#chmod u=rwx,go=r kk.c此时可用命令ls查看rootlocalhost kkk#ls -l(6)删除文件与文件夹删除kkka文件夹下的文件aa.crootlocalhost kkk#rm kkka/aa.c查看文件夹kkka下否删除了文件aa.crootlocalhost kkkls kkka/aa.c -l删除kkka文件夹下rootlocalhost kkk#rmdir kkka查看是否删除了文件夹rootlocalhost kkkls kkka -l(7) 新建一个linux_d目录,并设置它的权限为666。(8)在指定的目录中搜索文件,利用find命令搜索含有通配符的文件*.c。(9)练习命令:pingnetstatmountifconfig (10)在根目录下用find查找.c文件。(11)练习检查磁盘命令fdisk的使用。列出结果中有关/dev/sd的磁盘信息。/sbin/fdisk -l |grep /dev/sd (12)设置当前的时间为2013年10月01日10点23分。(13)在后台运行命令gedit,并用命令kill杀死gedit的进程。(14)检查磁盘,列出目录/dev/sd的磁盘信息。(15)查找/usr/sbin及/usr/bin/两个目录中所有的C语言程序。(16)统计当前目录下txt文件的总字节数。(17)把ps命令的标准输出结果输入给sort,经过排序后结果被保存到pssort.out中。五、实验结果记录任务2vi或vim的使用1、输入vi kk.c创建kk.c文件并用vi编辑,在最后行输入wq保存退出2、输入vi kk.c打开该文件,修改文件,在最后行输入wq! aa.txt另存为aa.txt文件并退出任务3gedit的使用1、 输入gedit命令打开gedit编辑器,输入以下文字,保存为kk.c2、 在保存目录下输入gedit kk.c打开,使用ctrl+h替换,另存为aa.txt任务4掌握mkdir、cd命令的操作1、 输入mkdir kkk新建目录kkkcd kkk进入kkk文件夹mkdir kkka新建目录kkkacd kkka进入kkka文件夹,结果如图2、 输入cd .返回上级目录,cd kkka再进入kkka文件夹输入cd进入用户主目录,即root文件夹,可使用pwd命令查看当前路径输入cd/etc进入etc文件夹任务5掌握cp、ls、mv、chmod、rm命令的基本操作1、 输入cd /home/brs/work/kkk/kkka 即绝对路径,可直接进入指定文件夹,vi kk.c建立文件编辑保存后,输入ls kk.c l查看指定文件详细属性输入mv kk.c aa.c将文件kk.c重命名为aa.c(此时mv命令源文件和目标文件在同一文件夹下,故起到重命名作用)输入cp aa.c /home/brs/work/kkk/kk.c将aa.c文件拷贝到kkk下并命名为aa.c输入chmod u=rwx,go=r kk.c修改文件权限,所有者读写运行,组内可读,查看输入rm kkka/aa.c删除kkka文件夹下aa.c文件,使用ls命令查看是否删除输入rmdir kkka删除kkka文件夹,再次查看是否删除2、 新建一个linux_d目录,设置权限为使用chmod 666 linux_d设置其权限为可读可写可执行3、 输入find /home/brs/work/kkk -name *.c 在指定目录搜索.c文件输入find -name *.c 在根目录下搜索.c文件4、 输入ping 查看与百度连接情况,使用ctrl+c中断输入netstat显示各种网络相关信息,如网络连接,路由表,接口状态输入ifconfig查看网络配置信息,如IP地址5、 mount /dev/sda1 /mnt/usb将设备名为sda1的U盘挂载至/mnt/usb使用umount /mnt/usb卸载U盘6、 输入/sbin/fdisk l|grep /dev/sd列出有关/dev/sd的磁盘信息,此处使用管道命令|将fdisk的输出作为grep的参数输入7、 输入date -s 20131001 10:23:00 设置系统时间8、 输入gedit& 在后台运行gedit,此时输入ps查看gedit进程PID号为100963,再输入kill -9 100963结束进程。9、 输入find /usr -name *.c 查找usr目录下所有.c文件10、输入wc c *.txt统计当前目录下txt文件的总字节数10、 输入ps sort result 把ps命令的标准输出结果输入给sort,经过排序后结果被保存到result中六、实验结果分析通过使用shell命令可直接完成文件命令操作,文本文件的编辑,并更改简单的系统设置七、实验心得(思考和意见) Linux的shell命令让用户可以使用功能强大的命令,完成一些windows上无法完成或繁琐的操作,为以后程序的编写,系统管理提供了便利,我们应熟练掌握这些基础知识。 在学习过程中遇到了不少问题,通过网络得到了解决。1、 sodu apt-get命令在使用vi编辑器时,上下左右按键变成了ABCD,这是由于vi版本号不同所造成的,此时需要使用sudo apt-get remove vim卸载原版vim,再输入sodu apt-get install vim安装最新版本,便可解决问题。此外sudo apt-get upgrade 用于更新已安装的软件。2、 su命令以常规用户登录时权限不足,在修改系统文件时会遭到拒绝,此时输入su及root密码可临时切换至root用户,获取最高命令。3、 rmdir命令只能删除空文件夹,若要删除非空文件夹,应使用rm r4、 开机登陆界面输入密码后无法进入桌面,此时按下ctrl+alt+F1可进入tty命令行,实际上F1-F6对应6个本地命令台,而F7对应图形界面,修改完成后按下ctrl+alt+F7即可返回图形界面。Linux程序设计实验报告2SHELL程序设计1一、实验目的1Shell程序设计中变量的使用;2理解通道的概念并初步掌握它的使用方法;3掌握算术操作、字符串操作、逻辑操作、文件操作;4掌握if then fi、if then elif fi、case、while、for等控制语句;5在shell脚本中使用函数; 二、实验任务与要求1.观察变量$#,$0,$1,$2,$3,$的含义2.SHELL程序设计中文件与文件夹的判断3.顺序、分支、循环程序的设计4.菜单程序的编写三、实验工具与准备计算机PC机,Linux Redhat Fedora Core6操作系统四、实验步骤与操作指导任务1调试下列shell程序,写出变量$#,$0,$1,$2,$3,$的含义。#! /bin/bashecho “程序名:$0”echo “所有参数: $”echo “前三个参数:$1 $2 $3”shiftecho “程序名:$0”echo “所有参数: $”echo “前三个参数:$1 $2 $3”shift 3echo “程序名:$0”echo “所有参数: $”echo “前三个参数:$1 $2 $3”exit 0修改程序,使用变量$#,程序运行时从键盘输入文件名,判断文件是否存在,如果存在,显示文件内容。提示:read DORFif -d $DORF then ls $DORF elif -f $DORF任务2编写一个shell程序,此程序的功能是:显示root下的文件信息,然后建立一个kk的文件夹,在此文件夹下新建一个文件aa,修改此文件的权限为可执行。提示:1. 进入root目录:cd /root2. 显示root目录下的文件信息:ls l3. 新建文件夹kk:mkdir kk4. 进入root/kk目录:cd kk5. 新建一个文件aa:vi aa #编辑完成后需手工保存6. 修改aa文件的权限为可执行:chmod +x aa7. 回到root目录:cd /root请修改程序,所建立的目录名从键盘输入,把/root下的所有文件信息保存在aa文件中。任务3调试下列shell程序,此程序的功能是:利用内部变量和位置参数编写一个名为test2的简单删除程序,如删除的文件名为a,则在终端输入的命令为 test a。提示:除命令外至少还有一个位置参数,即$#不能为0,删除的文件为$1。(1)用vi编辑程序rootlocalhost bin#vi test2#!/bin/sh if test $# -eq 0 then echo Please specify a file! else gzip $1 /先对文件进行压缩 mv $1.gz $HOME/dustbin /移动到回收站 echo File $1 is deleted !fi (2) 请修改程序,查看回收站中的文件,从键盘输入回收站中的某一文件,把此文件恢复到/home目录下。(3)删除垃圾箱中的所有文件。任务4调试下列程序,程序的主要思想是用while循环求1到100的和。 (1)用gedit编辑脚本程序test12rootlocalhost bin#gedit test12 total=0 num=0 while(num替换-还原IFSBAK=$IFS (备份原来的值) - IFS=,(替换) - IFS=$IFSBAK (还原)7、使用bc计算器时,用scale=n来精确到n位小数 在shell程序中使用a=echo”scale=n;x+y” | bc来进行运算 七、实验心得(思考和意见)1、内部参数在shell编程中十分有用,应熟练掌握$0 :程序所在的路径$# :传递给程序的总的参数数目$? :shell程序在shell中退出的情况,正常退出返回0,反之为非0值$* :传递给程序的所有参数组成的字符串3、 赋值时等号左右无空格4、 使用$(command)格式进行命令替换,如echo $(date)将输出Thu Jul 23 17:10:38 CST 2015Linux程序设计实验报告3SHELL程序设计2一、实验目的1提高Shell程序编程的技巧;2提升综合shell编程能力。二、实验任务与要求1.菜单的实现2.遍历所有以该目录为祖先的文件3.分支与循环、随机数在游戏程序中的应用4.定时检查存储空间文件的变化5.消息框程序设计6.菜单界面程序设计三、实验工具与准备计算机PC机,Linux Redhat Fedora Core6操作系统四、 实验步骤与操作指导任务1.编写下列程序。程序的功能是要实现如下菜单所表示的功能。 请输入您要清空的文件类型 1文件夹 2其他文件 3所有文件 0没想好,先退出任务2.调试下列shell程序。补充完整以下Shell程序,要求输入一个目录名,函数list的功能是遍历所有以该目录为祖先的文件,大致实现命令“ls -R”的功能。#!/bin/shlist()cd $1ls -lfor i in $(ls $1)do if -d $i then directory=$1/$i echo The directory $directory is a subdirectory of $1, which includes: list $directory cd $1 fi done 任务3.调试下列shell程序,这是一个小游戏,阅读程序,写出这个游戏的玩法。#!/bin/bashfor i in $( seq 1 54 ) #初始化牌do ok$i=1donemax=0 #初始化赢家for i in $(seq 1 4 ) #游戏开始do echo Player $i #玩家i 的回合 a=$(RANDOM%53+1) #抽牌 while $ok$a -eq 0 ; do a=$(RANDOM%53+1) done ok$a=0 if $a -gt $max ; then max=$a num=$i fi HuaSe=$(a%4) #生成花色 case $HuaSe in 0)HS=C; #草花 1)HS=D; #方块 2)HS=H; #红心 3)HS=S; #黑心 esac DaXiao=$(a/4+1) #生成牌值case $DaXiao in 2|3|4|5|6|7|8|9|10) echo $HS $DaXiao; 11)echo $HS J; 12)echo $HS Q; 13)echo $HS K; 1 )echo $HS A; 14)echo small JOKE ; #小王 15)echo big JOKE ; #大王 esac read lldoneecho Player $num win ! #游戏结果任务4.编写下列shell程序。编写一个程序,每隔5分钟检查一下当前用户(假设用户名为liujh)是否有新的邮件,若有则提示用户。提示题目的关键问题是获取5分钟前后此文件夹的存储容量,如果邮件箱中存储容量发生变化,则可判断有新邮件到达。提示关键语句: count1=ls -l /var/mail/liujh|awk print $5 echo $count1 sleep 300 #隔5分钟检测一次 count2=ls -l /var/mail/liujh|awk print $5 echo $count2 if $count1 -eq $count2 任务5.调试下列程序,程序调试后把此程序改写为游戏菜单控制程序。#! /bin/shdialog -title Start -msgboxdialog -title Welcome to the Start Menu.dialog -title Confirm -yesno Do you want to enter the Menu? 9 18if $? != 0; then dialog -infobox Welcome! sleep 2 dialog -clear exit 0fidialog -menu MENU 12 24 3 1 CO Player 2 Radio 3 Sound Control 2_1.txtM_O = $(cat _1.txt)if $M_O = 1 ; then !gnome-cdelif $M_O = 2 ; then !gnome-sound-recorderelse !gnome-volume-controlfiexit 0任务6.调试下列程序。程序功能是设计了一个简单的调查问卷菜单界面,调查学生一些个人信息。此程序运用了GUI图形化界面、使用了条件语句,case语句,使用户可以对菜单进行选择,并将选择结果保存在临时文件中,便于进一步操作计算。程序的源代码为:#!/bin/shgdialog -title Questionnaire -yesno Will you participate in this survey? 9 18if( $? != 0 ); then gdialog -infobox Thank you sleep 1 gdialog -clear exit 0figdialog -title Questionnaire -msgbox This is a survey about your personal information 9 18gdialog -title Questionnaire -inputbox Enter your name 9 18 2name.txt_name=$(cat name.txt)gdialog -menu $_name, what is your major? 9 18 3 1 Liberal Art 2 Science3 Computer Science 2choice.txt_choice=$(cat choice.txt)case $_choice in 1) gdialog -title Questionnaire -msgbox Good choice 9 18 ; 2) gdialog -title Questionnaire -msgbox Excellent 9 18 ; *) gdialog -title Questionnaire -checklist Choose the lanuage you learned 9 18 5 1 C off 2 C+ off 3 Java off 4 Ruby off 5 Delpi off;esacsleep 1gdialog -clearexit 0问题(1)分析整个程序的功能层次图;(2)在程序中提取5条新语句,或您认为有用的语句,分析它所对应的功能;(3)仿照程序,请编写类似功能属于自己开发的小程序。五、 实验结果记录六、 实验结果分析七、实验心得(思考和意见)Linux程序设计实验报告4 Linux系统C开发工具一、实验目的1掌握linux环境下C程序的编辑、编译、运行等操作;2掌握多文件系统的编译及连接库存的生成、应用;3初步掌握gdb调度方法;4初步掌握makefile工程文件的编写与使用;5掌握系统函数的应用。二、实验任务与要求1.函数库的创建;2.makefile工程文件的编写;3.应用gdb调试程序;4.使用GCC编译时连接库的使用。三、实验工具与准备计算机PC机,Linux Redhat Fedora Core6操作系统四、实验步骤与操作指导任务1.调试下列程序。程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。这两个函数分别是pro1和pro2。按下面步骤生成函数库及测试函数库。步骤1 为两个函数分别创建各自的源文件(将它们分别命名为pro1.c和pro2.c)。rootlocalhost root# cat pro1.c#include void pro1(int arg)printf(“hello:%dn”,arg) ;rootlocalhost root# cat pro2.c#include void pro2(char *arg)printf(“您好:%sn”,arg) ;步骤2 分别编译这两个函数,产生要包含在库文件中的目标文件。这通过调用带有-c选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。rootlocalhost root# gcc -c pro1.c pro2.crootlocalhost root# ls *.opro1.o pro2.o步骤3 现在编写一个调用pro2函数的程序。首先,为库文件创建一个头文件lib.h。这个头文件将声明库文件中的函数,它应该被所有希望使用库文件的应用程序所包含。rootlocalhost root# cat lib.h/*lib.h:pro1.c,pro2.c*/void pro1(int);void pro2(char *);步骤4 主程序(program.c)非常简单。它包含库的头文件并且调用库中的一个函数。rootlocalhost root# cat program.c#include “lib.h”int main()pro2(“Linux world”);exit(0);步骤5 现在,来编译并测试这个程序。暂时为编译器显式指定目标文件,然后要求编译器编译的文件并将其与预先编译好的目标模块pro2.o链接。rootlocalhost root# gcc -c program.crootlocalhost root# gcc -o program program.o pro2.orootlocalhost root# ./program您好:Linux world步骤6 现在,创建并使用一个库文件。用ar程序创建一个归档文件并将目标文件添加进去。这个程序之所以称为ar,是因为它将若干单独的文件归并到一个大的文件中以创建归档文件。注意,也可以用ar程序来创建任何类型文件的归档文件。rootlocalhost root# ar crv libfoo.a pro1.o pro2.o函数库现在即可使用了。可以在编译器命令行的文件列表中添加该库文件以创建程序,如下所示:rootlocalhost root# gcc -o program program.o libfoo.arootlocalhost root# ./program您好:Linux world也可以用-l选项来访问函数库,但是因为其未保存在标准位置,所以必须用-L选项来指示gcc在何处可以找到它,如下所示:rootlocalhost 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函数,建立一个库,对程序进行调试;(3)试写出问题(2)中的makefile工程文件。任务2.调试下列程序。#includeint main()char passwd13;char *key;char slat2;key= getpass(“Input First Password:”);slat0=key0;slat1=key1;strcpy(passwd,crypt(key slat);key=getpass(“Input Second Password:”);slat0=passwd0;slat1=passwd1;printf(“After crypt(),1st passwd :%sn”,passwd);printf(“After crypt(),2nd passwd:%s n”,crypt(key slat); 请写出调试命令。任务3.程序设计题。在home/kk目录下编写一个a.h库文件,在root目录下编写一个含main函数的主程序,在main函数中调用在a.h中的一个函数。任务4. 调试下列程序。调试目的是实现多文件编译。文件结构是: (1)bubble.h 存放函数bubble的声明。 (2)bubble.c 存放函数bubble的实现。 (3)main.c 存放main函数实现,其中调用了bubble函数。 (4)补充完整makefile文件 其中各文件中的代码如下:bubble.h#ifndef _BUBBLE_H_#define _BUBBLE_H_void bubble(int* a, int n);#endif / _BUBBLE_H_bubble.c#include bubble.hvoid bubble(int* a, int n)int i, j, t;for(i = 1; i n; i+)for(j = 0; j aj + 1)t = aj;aj = aj + 1;aj + 1 = t;main.c#include #include bubble.h#define COUNT 10int main(void)int i;int aCOUNT = 3, 5, 4, 8, 9, 6, 2, 1, 7, 0;bubble(a, COUNT);for(i = 0; i COUNT; i+)printf(%d , ai);printf(n);return 0;MakefileCC = gccFLAGS = -Wall -O2main: main.o bubble.o(请补充完整makefile文件)任务5. 程序调试。程序的功能是输入两个整数,输出两个整数间的所有自然数。步骤1 设计编辑源程序代码。rootlocalhost root#vim 4-3.c程序代码如下:#include 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 (xy)temp=x;x=y;y=temp;for(i=x;i=y;i+) printf(“%5d”,i);printf(“n”);return 0; 步骤2 用gcc编译程序。在编译的时候要加上选项“-g”。这样编译出的可执行代码中才包含调试信息,否则之后gdb无法载入该可执行文件,请写出编译命令。rootlocalhost root# 步骤3 进入gdb调试环境。gdb进行调试的是可执行文件,因此要调试的是4-3而不是4-3.c,输入如下,请输入gdb的调试命令:rootlocalhost root#回车后就进入了gdb调试模式。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环境。五、实验结果记录 六、实验结果分析七、实验心得(思考和意见)Linux程序设计实验报告5Linux环境系统函数的应用一、实验目的1掌握随机数函数的使用方法;2掌握结构体struct timeval的成员tv_sec与tv_usec的应用;3掌握时间函数time、localtime、gettimeofday的使用;4. 掌握系统函数system、tcgetattr等的应用。二、实验任务与要求1. 随机数函数的使用;2. 猜数游戏的程序;3. 结构体struct timeval的成员tv_sec与tv_usec的应用;4. 时间函数在简单记事本程序中的应用;5. 时间函数在计时器,有暂停、查看、重置程序设计设计中的应用。三、实验工具与准备计算机PC机,Linux Redhat Fedora Core6操作系统。四、实验步骤与操作指导任务1.调试下列程序。产生10个介于1到10之间的随机数值。提示函数rand( )会返回一个0 RAND_MAX(其值为2147483647)之间的随机值。产生一个大于等于0、小于1的数,此数可表示为:rand()/(RAND_MAX+1.0)。rootlocalhost root#vim 5-1.c程序代码如下:#include #include stdio.hint main() int i,j; srand(int)time(0); for(i=0;i10;i+
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!