GDB

Stepping step(s)/stepi(si) + <n>: 执行n行c/assembly 代码, 会跳进函数。 next(n)/nexti(ni) + <n>: 执行n行c/assembly 代码,不会跳进函数。 Running run/r: run code 直到遇到breakpoint。程序跑完接着run会restart程序。 continue/c: 继续执行。 finish: run code直到当前函数return。 advance <location>: run code直到指令到达。和设置breakpoint然后 Breakpoints break <location>: 设置断点,location可以是内存地址"*0x7c00"或者名称"mon_backtrace", "monitor.c:71" break <location> if <condition>: 只有condition满足的时候才会break。 cond <number> <condition>: 给某个断点增加condition。 Watchpoints watch <expression>: 表达式值发生改变时,会停止执行指令。 watch -l <address>: 内存地址的值发生改变时,会停止执行指令。 rwatch [-l] <expression>: 表达式值被read后,会停止执行指令。 Examining x: 打印内存的原始数据,x/x十六进制,x/i汇编。 print/p: 打印C expression。 x/s <内存地址>或p (char*)<内存地址>: 打印字符串。 p $rax: 打印某个寄存器值。 info registers: 打印所有寄存器。 info frame: 打印当前栈帧。...

2023-05-08 · 2 min