工具箱5:gdb操作
1 | target remote:1234 | 连接gdb-server port需要根据用户需要调整 |
2 | break [b] break FunctionName break FileNmae:LineNumber | 断点 |
3 | run [r] | |
4 | continue [c] | |
5 | watch watch VarName watch Address | 观测 观测变量 观测内存 |
6 | info info r info b info thread | |
7 | backtrace [bt] | 函数调用栈 |
8 | frame [f] frame idx | 跳转到函数栈 |
9 | delete [d] delete BreakIdx | |
10 | next | 单步调试 (逐过程,函数直接执行) |
11 | step | 单步调试 (逐语句:跳入函数内部执行) |
si | 单步调试 (insn跳转) | |
12 | print [p] | 打印变量 |
p/x | 16进制 | |
p/t | 2进制 | |
13 | x x 0x12345678 x/nfu 0x12345678 | 查看内存 |
14 | set scheduler-locking on/off/step | 线程切换,锁定 |
15 | set print array on set print array-indexes on set print pretty on set print max-depth 1 set print max-depth 0 | 开启打印数组 开启打印数组索引 |
16 | set print elements 0 | 设置打印全量字符串(不省略模式) |
17 | set print repeats 0 | 设置不合并重复选项,显示<repeats 30 times> |
18 | set var=10 | 设置变量值 |
set $r0=10 | 设置r0寄存器值 | |
19 | gdb 源码映射 | |
set substitute-path /build/dir /path/to/source | 编译输出位于/build/dir,而源代码位于/path/to/source |
调试显示
1 | layout src | 显示源代码 |
2 | layout asm | 显示汇编 |
3 | layout split | 显示源代码+汇编 |
常用操作
1 | elf文件生成dump文件 | llvm-objdump -C -t -x -S app.elf > app.elf.dump |
2 | map文件 | link阶段生成 -Map=app.map |
git docker ubuntu shell gdb