今天学习了gcc编译器和gdb调试工具,初步接触了shell脚本
(1)GCC编译器
整个编译过程可以分为4个阶段
1.预处理:本阶段进行头文件展开
2.编译:检查语法,翻译成汇编语言
3.汇编:把汇编语言翻译成机器语言
4.链接:链接一些库(函数)
整个编译过程为:gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc test.o -o test
接下来在命令窗口输入:./test就可以编译test.c程序了
(2)GDB调试工具
在使用gdb调试时,被调试的应用程序最会使用-g参数将调试信息编入目标文件中
gcc -g test.c -o test
此时在命令窗口输入:gdb test就会进入gdb交互界面,在gdb交互界面也有一些常用指令:
list(l) 列出源码
break(b) 设置断点
run(r) 从头开始运行程序
continue(c) 从停止除继续运行程序
next(n) 向前执行一句(不进入被调用函数)
step(s) 向前执行一句(可进入被调用函数)
return(r) 从当前函数返回
print(p) 显示变量或表达式的值
x 显示内存值
quit(q) 退出gdb
(3)shell脚本
固定格式:#!/bin/bash
执行脚本时要先修改权限,一般为 chmod 755 filename.sh
执行脚本:./filename.sh or sh filename.sh or bash filename.sh
$符号:使其后的普通字符作为变量名,如$a表示变量a的值
#符号:注释符
单引号:被引起的字符全部做普通字符,即全部原样
双引号:引号内的内容除$、转义符\、倒引号`这三个保留特殊功能其他字符均做普通字符
倒引号:引号内的字符串当做shell命令行解释,执行得到的结果取代整个倒引号括起来的部分。
echo指令:$# 命令行参数个数
$* 输出所有参数
$n 第n个参数
$0 当前程序名
for循环语句:
for 变量 in 列表
do
语句1
语句2
........
done
case语句:
case 值 in
模式一) 语句1
语句2
.........;;
模式二)
语句1
语句2
.........;;
if判断语句
if 条件
then
command
elif
then
command
else
command
fi