1. vim
.
:小数点,重复上一次的命令
vim 中进行查找
1)基本查找命令
查找下一个匹配项:
1 | /<搜索内容> |
- 按下 / 键,输入要查找的内容,然后按下回车键 Enter。
- 例如:
/hello
表示查找 hello
2)跳转到另一个查找结果
- 跳转到下一个匹配项:按
n
键 - 跳转到上一个匹配项:按
N
键
vim 中复制粘贴
复制:
yy
: 复制当前行nyy
: 复制从当前行开始的 n 行(例如:3yy
复制当前行及其下两行,共三行)
粘贴:
p
: 在光标后粘贴
光标移动
NG
: 跳转到第 N 行:n
: 跳转到第 N 行gg
: 跳转到第一行, 相当于1G
G
: 跳转到最后一行w
: 光标跳到下一个单词的开头e
: 光标跳到当前单词的结尾%
: 跳转到匹配的括号处(大括号、中括号)*
: 高亮显示所有与当前光标所在单词相同的单词处- 按
n
跳转到下一个匹配处 - 按
N
跳转到上一个匹配处
- 按
组合命令:
example:
0y$
: 复制从行首到行尾的内容0
: 行首y
: 复制$
: 行尾
其他高级组合用法符号说明:
0
: 行首^
: 到本行第一个非空字符$
: 行尾g
: 到本行最后一个非空字符fa
: 到下一个匹配的字符 a 处(可以改变 a 为其他字符)t,
: 到逗号前的第一个字符(逗号可以改变为其他字符)
配置vim显示行号
1 | 打开vimrc配置文件 |
在vimrc配置文件中添加如下内容:
1 | set number |
2. terminal 操作
find
查找并忽略没有权限的文件的报错信息:
1 | find / -name "文件名.c" 2>/dev/null |
查找内核的路径
uname -a
: 显示当前内核信息
ls -l /usr/src
: 找到 uname -r 显示的版本的内核路径
查看bios版本
sudo dmidecode -t bios
查看磁盘哪个占用最高
1 | df -h |
1 | 18G /home |
假设逐层检查发现是 /var/crash
占用最高,如果确认占用最高的目录删除后没有影响,那么就删除该目录:
1 | rm -rf /var/crash/* |
设置环境变量
用 export
命令设置环境变量,例如:
配置路径:
1 | export PATH=$PATH:/usr/local/bin |
配置变量:
1 | export $VAR=value |
关闭内核打印
有时候我们在应用层调试程序的时候想暂时屏蔽掉内核的无用打印,可以在 host 用以下方法暂时关闭,这样开启 guest 虚机的时候就不会将内核信息打印到主机中,影响性能:
1 | echo 0 > /proc/sys/kernel/printk |
修改 linux 密码
1 | sudo passwd root |
设置维持 ssh 连接不断连
1 | sudo vim /etc/ssh/sshd_config |
然后在文件中写入如下内容: 1
2Host *
ServerAliveInterval 60
最后,记得重启sshd服务:service sshd restart
scp
scp user1@ip1:/home/user1/file1.txt user2@ip2:/home/user2/file2.txt
3. gdb 调试
常用指令
1 | target remote localhost:1234 |
查看某个地址处内存的值:
按当前寄存器值查看
看 x1 指向的同一块目的地址x/4xg 0x200000
查看变量值
- 查看变量值
print / p
1 | p var # 打印变量值 |
print string 指针
1 | p s |
print 数组
1 | p arr # 打印数组指针 |
设置断点
函数断点
1 | break main # 在 main 函数处断点 |
行号断点
1 | break main.cpp:25 # 在 main.cpp 第25行设置断点 |
条件断点
1 | break main.cpp:30 if i==5 # 仅当 i==5 时停下 |
运行与继续执行
1 | run # 从头开始运行 |
单步调试
step / s:进入函数内部执行
1 | step |
next / n:执行下一行,但不进入函数内部
1 | next |
stepi / si:按 CPU 指令单步执行
1 | stepi |
nexti / ni:按指令单步,但不进入函数
1 | nexti |
4. qemu 使用
qemu 指令
virsh 指令
1 | 安装相关依赖和启动服务 |
查看用qemu起的虚机 pid
ps aux | grep qemu
5. Linux 中对工程代码的跳转、函数查找
vim 中函数跳转
安装 ctags
在工程源目录下为所有文件生成 ctags:ctags -R *
在 vim 中使用 ctags 跳转::tag 函数名
在 vim 中使用ctrl+]
跳转到函数定义
看完后使用ctrl+t
返回到函数调用(跳回)