点击(此处)折叠或打开
- gcc -g3 -Wall -Wextra
- gcc -O9 -g3 -Wall -Wextra
点击(此处)折叠或打开
- gdb <your_code> -tui
- gdb <your_code>
- list 1,71 #list 1-71 行
- list main #list main 函数,list后面可以跟行数,函数名
- info source #查看当前在看的源代码文件
点击(此处)折叠或打开
- break 函数名
- break 行号
- break 文件名:行号
- break 文件名:函数名
- break +偏移量
- break -偏移量
- break *地址
- b iseq_compile #对函数设置断点
- b compile.c:516 #特定行
- b +3 #3行后
- b *0x08116fd6 #breakpoint set at address
- info break #查看所有断点
- delete 2 #delete 2号断点
点击(此处)折叠或打开
- #运动 run,执行run 会执行到设置到断点的位置后暂停运行,可以简写为r.
- run -a
- start 能达到同样的效果,在main() 上设置断点,然后执行到main() 函数。
- #backtrace命令可以在遇到断点而暂停执行时显示栈帧
- backtrace 简写bt
- info stack : 简写为info s 或者where
- bt 显示所有栈帧
- bt N 或者backtrace N: 显示开头N个栈帧
- bt -N 或者backtrace -N: 显示最后N个栈帧
- backtrace full /bt full
- backtrace full N/bt full N: 显示栈帧的同时显示局部变量
- next #运行下一行指令
点击(此处)折叠或打开
- #print 命令可以显示变量,简写为p
- p argv
- p *argv
- p argv[0]
- p argv[1]
点击(此处)折叠或打开
- 显示寄存器:
- info reg
- 显示各个寄存器的内容:
- p $eax
- p/格式 变量
- 格式 显示说明
- x 16进制
- d 10进制
- u 无符号10进制
- o 8进制
- t 2进制
- a 地址
- c 字符
- f 浮点小数
- s 字符串
- i 显示为机器语言
点击(此处)折叠或打开
- p/c $eax #eax 寄存器, char
- p $pc #pc 寄存器或者eip
- x/i $pc #x/i 显示汇编指令
- x/NFU ADDR #ADDR 为希望显示的地址,N为重复次数,F为前面讲过的格式,U是代表的单位
- 单位 说明
- b 字节
- h 半字(2字节)
- w 字(4字节)默认值
- g 双字(8字节)
- x/10i $pc #显示从pc所指地址开始的10条指令