一、多进程调试
命令 | 值 | 功能 |
follow-fork-mode | parent | 进入父进程。(默认) |
child | 进入子进程。 | |
datch-on-fork | on | 调用 fork 之后,未被调试的进程正常运行。(默认) |
off | 调用 fork 之后,未被调试的进程被阻塞。 | |
info inferiors | (null) | 查看进程信息。 |
inferior | num | 切换到 num 进程。 |
对于 gdb 来说,指令 datch-on-fork 就是想询问大家 gdb debugger 是否需要与 child fork 分离?分离就意为着 child fork 可以摆脱 gdb 的约束,从而无忧无虑的运行。如果该指令为 on,则 child fork 正常运行即可,否则阻塞。
二、多线程调试
命令 | 值 | 功能 |
scheduler-locking | off | 调试本线程时,无论使用 n、s还是 c 指令,其他线程正常运行。(默认) |
on | 调试本线程时,无论使用 n、s还是 c 指令,其他线程均阻塞。 | |
step | 调试本线程时, 使用 n 和 s 时,其他线程阻塞。 使用 c 时,其他线程正常运行。 | |
info threads | (null) | 查看本进程所有线程的信息。 |
thread | num | 切换到编号为 num 线程。该编号是由 gdb 提供的。 |
对于 gdb 来说,指令 scheduler-locking 就是想询问大家 gdb debugger 是否需要对其他线程的运行加锁?当为 on 时,就实时加锁,off 时为永不加锁,step 时为只在单步下加锁。
(SAW:Game Over!)