实 验 报 告
姓 名 | 学 号 | 专业班级 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
课程名称linux终端下载软件 | 操作系统实验 | 实验日期 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
成 绩 | 指导教师 | 批改日期 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验名称 | 实验一 VMware虚拟机与linux操作系统的安装和使用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、实验目的: 1、了解主流虚拟机软件的功能和特点 2、熟练掌握VMware Workstation 虚拟机软件的使用过程 3、了解linux操作系统的各种发行版本 4、掌握Red Hat Enterprise Linux 5 的安装方法 5、安装 linux的其他版本 6、初步学习在linux下进行C语言程序编程与调试 二、实验要求: 1、 三种虚拟机软件各自的功能特点:
2、Linux的分区过程: Linux系统分区
三、实验内容与步骤: 1、使用VMware workstation 7.0创建一个虚拟机 2、在虚拟机上安装linux操作系统Red Hat Enterprise Linux 5 3、在RHEL5上安装VMware Tools for linux,增强GuestOS 的现实、鼠标功能,包括方便在真实机和虚拟机之间copy文件之类的操作 4、linux下的C语言编程与调试: 1)用编辑器创建一个greeting.c文件,起初我发现会出现以下错误: 我查阅资料后得知上图程序中出现“程序中有游离的***”的原因: 1.程序中输入的字符: , ; " ' / 等符号,有可能是使用的中文输入法输入的 2.程序中有使用全角拼音的现象 改正后得到如下代码: #include <stdio.h> #include <malloc.h> #include <string.h> main () { void my_print (char *string); void my_print2 (char *string); char my_string[] = "hello there"; my_print (my_string); my_print2 (my_string); } void my_print (char *string) { printf ("The string is %s ", string); } void my_print2 (char *string) { char *string2; int size, i; size = strlen (string); string2 = (char *) malloc (size + 1); for (i = 0; i < size; i++) string2[size - i] = string[i]; string2[size+1] = ’\0’; printf ("The string printed backward is %s \n", string2); } 1)gcc命令编译程序gcc -o greeting -g greeting.c执行后显示结果如下: The string is hello there The string printed backward is 输出第一行是正确的,但第二行是不正确的,所设想的输出应该是: The string printed backward is ereht olleh 2)进入调试器,输入gdb ./greeting 如果在输入命令时忘记吧要调试的程序作为参数传递给gdb。可以再gdb提示符下用file命令来载入它: (gdb)file greeting (gdb) run 3)为了见症结所在,可以在my_print2函数的for语句后设置一个断点,具体做法是在gdb 提示符下键入list命令三次,列出源代码,查看行号。 (gdb)list (gdb)list (gdb)list 假设断点的地方是在第24行, (gdb)break 24 4)再次输入run命令,程序挂起在设置断点的位置。 5)设置一个观察string2[size-i]变量值的观察点来看出错误是怎么样产生的,输入命令(gdb)watch string2[size-i] 6)用next命令来一步步的执行for循环 (gdb)next 记录每次循环后string2[size-i]的值是多少,是否和期望值相同。确定程序出错的位置,并分析其原因。 7)出问题出在哪里后,退出gdb,然后修正程序并重新编译。 #include <stdio.h> #include <malloc.h> #include <string.h> main () { void my_print (char *string); void my_print2 (char *string); char my_string[] = "hello there"; my_print (my_string); my_print2 (my_string); } void my_print (char *string) { printf ("The string is %s ", string); } void my_print2 (char *string) { char *string2; int size,i; size = strlen (string); string2 = (char *) malloc (size + 1); for (i = 0; i < size; i++) string2[size - i-1] = string[i]; string2[size] =‘\0’; printf ("The string printed backward is %s \n", string2); } 四、实验总结与心得: 在linux系统下的C语言编程和调试技术与windows系统下类似。同样地,在编写源代码时,要注意写全必要的头文件(比如本实验中的malloc.h);在引用函数时,要注意先声明;在对字符串进行操作时要注意对应元素次序与标号的关系;调试程序时,要选择适当的位置设立断点,分析变量值,从而达到纠错的目的。 此次试验中,由于第一次接触linux系统,对于习惯了windows图形化界面的我们来说,确实有些不适应。但是,linux中,仅凭终端里的简单代码就能实现各种功能,确实让我们体会到了该系统的强大。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论