一、GDB调试命令
编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main
打开gdb调试:gdb main
ctrl+c:退出输入
(gdb) 回车键:重复上一命令
(gdb)start: 单步执行,运行程序,停在第一执行语句
(gdb)run: 重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
(gdb)start/run argv[1] argv[2]: 调试时命令行传参
(gdb)list n : 查看源代码第n行上下文共10行的代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
(gdb)next: 单步调试(逐过程,函数直接执行),简写n
(gdb)step: 单步调试(逐语句:跳入自定义函数内部执行),简写s
(gdb)continue: 继续运行,简写c
(gdb)quit: 退出gdb,简写q
(gdb)break n : 在第n行设置断点,简写b
(gdb)info break/breakpoints: 查看当前设置的所有断点、观察点
(gdb)delete breakpoints num: 删除编号为num的断点,简写d
(gdb) clear 行号: 删除设在某一行的断点
(gdb)enable breakpoints: 启用断点
(gdb)disable breakpoints: 禁用断点
(gdb)watch x : 被设置观察点的变量x发生修改时,打印显示
(gdb)info watch: 显示观察点
(gdb)print a: 打印变量a值及地址,简写p
(gdb)info locals: 显示所有局部变量的值
(gdb)display: 追踪查看具体变量值
(gdb)undisplay: 取消追踪观察变量
(gdb)frame: 切换函数的栈帧,当前运行位置,简写f
(gdb)finish: 结束当前函数,返回到函数调用点
(gdb)backtrace: 查看函数的调用的栈帧和层级关系,简写bt
(gdb)x: 查看内存,如 x/3cb str //打印3个,字符格式,1个字节,的单元
(gdb)set: 设置变量的值,如:set print elements N //指定打印的长度,对长字符串特别有用
(gdb)set follow-fork-mode child#Makefile项目管理: 选择跟踪父子进程(fork())
core文件:先用$ ulimit -c 1024 开启core,当程序出错会自动生成core文件。调试时 gdb a.out core
二、VIM快捷键
(1)按"Esc"命令模式:
回到第一行:gg
回到视窗第一行:H
回到视窗中间:M
到最后一行:G
(2)按"v"是视图模式:
回到行首: ^到达行尾: $
从当前位置选择: h左、 j下、 k上、 l右
选择后复制: y
选择后剪切: d
选择后修改: c
选择后粘贴:p
(3)命令模式按" :"到末行模式:保存: w
退出: q
取消高亮:noh
(4)命令模式按" /"到搜索模式:查找: 字符+回车