跳到主要内容

在调试器内跳转

设置断点和启动进程

% gdb a.out
(gdb) br main
(gdb) run

单步调试

step-in 单步调试 (源码级别)

(gdb) step
(gdb) s

step-over 单步调试 (源码级别)

(gdb) next
(gdb) n

step-in 单步调试 (汇编指令级别)

(gdb) stepi
(gdb) si

step-over 单步调试 (汇编指令级别)

(gdb) nexti
(gdb) ni

step-over 跳出栈帧

(gdb) finish

断点调试

跳转到下一个断点

(gdb) continue
(gdb) c

运行到指定行数

(gdb) until 12

线程切换

列出程序中的线程

(gdb) info threads

设置后续命令的默认线程

(gdb) thread 1

栈帧切换

显示当前栈帧简略信息

(gdb) info frame
(gdb) i f

显示当前栈帧源代码行

# check frame source code
(gdb) frame

通过栈帧号选择栈帧

(gdb) frame 12

选择调用当前栈帧的栈帧

(gdb) up

选择被当前栈帧调用的栈帧

(gdb) down

使用栈帧相对偏移选择栈帧

(gdb) up 2

(gdb) down 3

从栈帧返回,可以带有返回值

(gdb) return <RETURN EXPRESSION>

调用带有断点的函数并在断点处停止

(gdb) set unwindonsignal 0
(gdb) p function_with_a_breakpoint()

调用 crash 的函数并在 crash 时停止

(gdb) set unwindonsignal 0
(gdb) p function_which_crashes()