1.1实验目的
了解Linux系统的组织和行为,包括 Linux的用户界面、目录结构组织、运行程序的基本方式。通过使用终端(terminal)熟悉Linux Shell 、常见命令(cd、ls、ps、chmod等)和 redirect、pipe机制。学习使用vi或者gedit等编辑器编辑一个c语言源程序,并用gcc对源程序进行编译以及运行生成的可执行文件并熟悉调试方法。
1.2实验内容及要求
(记录实验详细过程,包括源代码、调试方案设计及调试过程问题分析、实验结果的示例程序及相关分析)
1.2.1 熟悉一些常见命令和 redirect、pipe机制
1.cd(change directory)用于切换当前工作目录、ls(list)用于显示指定工作目录下的内容
(cd ~是跳转到当前用户的家目录)
显示指定工作目录usr下的内容
(ls -lh:以人类可读的方式显示当前目录中的文件和目录大小)
2. ps (process status)用于显示当前进程的状态
(ps -A:列出所有的进程)
默认情况下只显示了程序的进程ID(Process ID, PID)、它们运行在哪个终端(TTY)以及进程已用的CPU时间。
3. chmod(change mode)是控制用户对文件的权限的命令
(--help : 显示辅助说明)
(1)ugoa:u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
(2)+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
(3)r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
4. redirect
输出重定向:
(echo用于字符串的输出, cat 用于查看文件内容,使用>会使文件里已经存在的内容将被新内容替代。>>为追加方式)
输入重定向:
5. pipe机制
“|”是Linux管道命令操作符。使用 “|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用。
bc 命令是任意精度计算器语言,通常在linux下当计算器用。输出结果“2+4”作为输入内容传递给了计算器语言bc,对“2+4”经过运算后输出。
1.2.2 编辑一个c语言源程序并编译运行
1.终端方式
Vim编辑器:
(编辑模式:按i键,命令模式:按esc键)
GDB调试
注:gcc编译的时候需要加上-g参数。启动 GDB 的同时,通过添加 --silent可将部分无用信息屏蔽掉
(gdb) break/b xxx 在源代码指定的某一行设置断点,其中 xxx 用于指定具体打断点的位置。
(gdb) run/ r执行被调试的程序,其会自动在第一个断点处暂停执行。
(gdb) continue/c 当程序在某一断点处停止运行后,使用该指令可以继续执行,直至遇到下一个断点或者程序结束。
(gdb) list/l 显示源程序代码的内容,包括各行代码所在的行号。
(gdb) quit/q 终止调试。
2. Code::blocks方式
安装软件:Ubuntu安装codeblocks,笔记-CSDN博客
1.3 实验总结
经过这次实验我学习了如何用VMware在真实机上创建一台Linux虚拟机,并学习了使用vi编辑器编辑一个c语言源程序,并用gcc对源程序进行编译以及运行生成的可执行文件。安装了Linux下的可视化调试工具Code::blocks并熟悉了它的基础使用方式。