linux使用手册

1.文件的解压与压缩

tar -xvf filename.tar
tar -xzvf filename.tar.gz
tar -xjvf filename.tar.bz2
tar -xZvf filename.tar.Z
unrar e filename.rar
unzip filename.zip

2.文件(夹)的复制等

rm filename 删除文件
rm -r foldername 删除文件夹
cp -r sourcename targetpath 复制文件夹sourcename至路径targetpath处
mv sourcename targetpath 移动文件(夹)至路径targetpath处

3.编译与运行

gcc source.c -o execute 编译source.c产生可执行文件execute
./execute 运行execute

4.vim操作

5.gdb调试

gcc test.c -g -o test //生成调试文件
gdb test //开始调试

r/run 运行直至结束或到达断点处
c/continue 继续运行至结束或到达断点处
s/step 运行一步
n/next 运行一条语句
q/quit 退出gdb
k/kill 退出当前调试的程序

layout <src/arm> 显示源代码/汇编窗口
layout regs 显示源代码/汇编和寄存器窗口
layout split 显示源代码和汇编窗口
layout <next/prev> 显示上一个/下一个layout
Ctrl+L 刷新窗口
Ctrl+x,再按a,退出layout,回到传统模式,退回到进入layout之前的状态

l/list 显示10行代码,若再次运行该命令则显示接下来的10行代码
set listsize 设置list命令显示的源代码数量最多为count行,0表示不限制行数
set disassembly-flavor <intel/att> 设置汇编代码显示风格
show listsize 显示listsize的值
edit 在编辑器中编辑location处的源代码,如果省略location,则编辑当前位置
l/list <5,10> 显示源代文件test.c中的第5行到第10行的代码,
l/list test.c:5,10 显示源文件test.c中第5行到第10行的代码,在调试含有多个源文件的程序时使用
l/list 显示function函数周围的代码
l/list test.c:function 显示源文件test.c中function函数周围的代码,在调试含多个源文件的程序时使用
l/list * 显示指定地址附近的代码
search <字符串> 从当前行的下一行开始向前搜索
rev <字符串> 从当前行的上一行开始向后搜索
info line 显示源代码count处对应的汇编地址范围
info line * 显示地址addr处对应的源代码位置

disas </ /m / /r / > 显示汇编代码,‘/m’混合输出源代码和汇编代码;‘/r’混合输出二进制和汇编代码;
disas 第一种不带参数,显示当前正在执行的函数的汇编代码;第二种是一个参数,显示该地址所在函数的汇编代码;第三种是两个参数的disassemble start,end,显示地址[start,end)内的汇编代码;第四种是两个参数的disassemble start,+length,显示地址[start,start+length)内的汇编代码。参数可以是16进制的地址,也可以是函数名。

b/breakpoint <行> (条件) 设置断点
b/breakpoint 在某个函数处设置断点
info breakpoints 查看当前所有的中断点
disable <行> 使某个断点失效
enable <行> 使某个断点恢复有效
clear < /行/函数名> 删除断点
delete <断点编号>… 删除指点编号断点

p/print(/x/d/u/o/t/a/c/f) 打印变量或表达式的当前值,(按照格式)
p/print <变量=值> 对变量进行赋值
set variable <变量=值>
whatis <变量或表达式> 用来显示某个变量或表达式值的数据类型
display <变量名> 跟踪查看一个变量,每次停下来都显示它的值

x(/n,f,u为可选参数)

查看指定单元内存的内容并按照格式打印
{
n: 需要显示的内存单元个数,也就是从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义
f:显示格式
x(hex) 按十六进制格式显示变量。
d(decimal) 按十进制格式显示变量。
u(unsigned decimal) 按十进制格式显示无符号整型。
o(octal) 按八进制格式显示变量。
t(binary) 按二进制格式显示变量。
a(address) 按十六进制格式显示变量。
c(char) 按字符格式显示变量。
f(float) 按浮点数格式显示变量
u:每个单元的大小,按字节数来计算。默认是4 bytes。GDB会从指定内存地址开始读取指定字节,并把其当作一个值取出来,并使用格式f来显示
b:1 byte h:2 bytes w:4 bytes g:8 bytes
比如x/3uh 0x54320表示从内存地址0x54320读取内容,h表示以双字节为单位,3表示输出3个单位,u表示按照十六进制显示。
}

i/info frame 查看当前程序栈内容
i/info args 查看当前程序栈的信息
i/info locals 查看当前程序栈的参数
i/info r/registers 查看当前寄存器的值
i/info all-registers 查看当前寄存器的值,包括浮点寄存器
i/info catch 查看当前栈帧中的异常处理器

i/info threads 显示当前可调试的所有线程
break test.c:12 thread all 在所有线程中相应的行上设置暂停
thread 切换当前线程为指定id的线程
thread apply < command> 让多个线程执行command命令
thread apply all 所有被调试程序执行command命令
set scheduler-locking [off/on/step]
{
off:所有线程都执行,是默认值
on:只有当前被调试线程执行
step: 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行

}
show scheduler-locking 查看当前锁定线程的模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章