gdb调试工具:
首先编辑一个app.c文件,然后
使用命令:gcc -g app.c -o app(-g专门用于调试二进制文件)
gdb app 显示版本信息,然后进入gdb调试界面
输入命令run(运行程序)
gdb list(8) :列出代码(以10行为单位)(以第8行开始)
quit :tu 退出
命令行参数./test( 这里面写参数)
gdb -args tesrt :调试带命令行参数
gdb中一些重要的命令汇总
llist l 列出代码
break b 设置断点(运行,让代码停在某一行)
run r 从头开始运行程序
continue c 从停止出继续继续运行程序
next n 向前执行一句(不进入被调函数中)
step s 向前执行依据(可进入被调函数中)
return ret 从当前函数返回
print p 显示变量式表达式的值
quit q 退出gdb
break命令:
gdb b 17 (17行打印一个断点)
gdb b add (add函数处打印一个断点)
gdb info b (查看断点设置信息)
gdb delete b+最前面的序号
gdb print a(打印a变量的值)
gdb print b(打印b变量的值)
脚本文件———解析命令
命令:echo:输出一句话 &&:代表几行命令一起执行
shell:所有脚本文件都以.sh结尾,而且.shbu's不是文件后缀,只是为了方便辨认
创建文件 vim.hello.sh进入后,第一行都以 #!/bin/bash 开头( 必须是绝对路径 ,bash为解析器)
脚本语言不需要编译,因为有bash 解析器。
#!/bin/bash 为一个bash 脚本
echo:输出
echo hello >test.txt(将hello写进test.txt 文件中,test.txt文件会自动创建),若紧接着再写echo world > test.txt ,则会覆盖掉之前写进去的hello.
要想不被覆盖,可以bian编写命令echo world>>test.txt(>>为追加符号)。
以下是一段输出代码,创建一个文件夹hello.sh
#!/bin/bash
hello = “helloworld”
echo ${hello} 或 echo $ hello
点击命令 ./hello.sh,运行得出helloworld
改进后:
#!/bin/bash
hello="helloworld"
echo $0(第0个参数)
echo $1(第1个参数)
echo $2(第二个参数)
echo $3(第三个参数)
echo $#(输出参数个数)
echo $*(输出所有参数)
echo $?(程序返回值判断,0代表程序执行成功,1代表程序执行失败,若程序中return 100不为 0,则输出100)
点击命令./hello.sh asd asd xfc
输出参数 。。。
for 循环(这里不需要)不需要定义变量,可以直接使用)
建文件 circle.sh,点击命令 vim circle.sh
输入下面代码段
#!/bin/bash
for((i=0;i<5;i++));
do
echo(tab)"helloworld"
done
点击命令:./circle.sh 输出:
helloworld
helloworld
helloworld
helloworld
helloworld
补充代码:
for i in {1..10}
do
echo "jsetc"
done
输入命令./circle.sh:
helloworld
helloworld
helloworld
helloworld
helloworld
jsetc
jsetc
jsetc
jsetc
jsetc
jsetc
jsetc
jsetc
jsetc
jsetc
继续补充(把i当字符串循环)
for i in a b c d(i分别等于a b c d)
do
echo $i
done
输入./circle.sh :
a
b
c
d
利用脚本在三个目录中创建三个相同的.sh 文件代码
首先创建vim file.sh,编写命令代码
#!/bin/bash
for name in $1 $2 $3
do
mkdir $name
cd $name
echo>$name.c"
#include
int main()
{
printf(\"helloworld\\n"\);
return 0;
}"
cd ..
done
退出编辑后,执行命令chmod 777 file.sh 对file.sh 更改权限。
输入命令:./file.sh aa bb cc(aa bb cc为目录名)
运行后会自动生成aa bb cc 目录,并且每个目录下有相对应的aa.c bb.c cc .c文件名。
判断(目录/文件 是否为空)
创建文件vim judge.sh 进入编辑
#!/bin/bash
PATH="/home/163/shell/file.sh"
if[(tab)-d ${PATH}(tab)];then(判断是否为目录)
echo(TAB)"是个目录"
fi
if[(TAB)-f ${PATH}(TAB)];then
echo (TAB)"是个文件"
fi
退出编辑后输入命令chmod 777 judge.sh 修改用户权限
./judge.sh (文件或目录名)
改进:
#!/bin/bash
PATH = $1
if[ ! -n $PATH ]; then(判断参数是否为空,如果不为空,则成立)
echo "输入有误"
exit 1
fi
if [ -d ${PATH}];then
echo "是个目录"
elif [ -f ${PATH}]; then
echo "是个文件"
fi
同理运行
case 语句
首先建立 vim case.sh
#!/bin/bash
echo "请输入一个字符"
read key
case "$key" in:
[A-Z] ) : echo"大写字母";;
[a-z] ) : echo "小写字母";;
[0-9] ): echo "数字";;
* ):echo "其他"
esac
./case.sh
export 命令:
export xxx = "abcd"
echo $ xxx
输出abcd
unset xxx(unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量)
echo $ xxx
则显示无
编译一个cc.c文件
gcc cc.c -o cc生成cc
只要运用mv cc /bin,则可以不用./命令,直接写cc则可以编译
第二种方法
使用命令:export PATH=$PATH:/bb(/bb为路径)将其添加到PATH中,也可以直接编译。
今天就整理到这里,敲了一个晚上。。。