多进程调试
info inferiors
: 显示当前的多进程信息. 前面有*
表示当前调试的进程
-
inferiors num
: 指定当前调试的进程. num表示当前跳转到调试的进程番号.如果要调试子进程的话, 可以用
ps
命令查看在使用该命令执行指定进程的调试
-
set|show follow-fork-mode
show follow-fork-mode
: 显示当前运行的模式 (先调试父进程还是子进程), 默认是调试父进程
- `show follow-fork-mode` : 设置当前先调试的(子或父)进程.
set detach-on-fork on|off
- on : 多个进程同时运行(默认). 而调试的进程默认以
show follow-fork-mode
决定. - off : 关闭多进程同时运行. 只有一个默认进程在调试中运行. 一般我们在多进程中就会设置该属性.
- on : 多个进程同时运行(默认). 而调试的进程默认以
-
set follow-exec-mode new|same
- new : 新建一个 inferior 给执行起来的子进程. 即子进程的编号将会改变
- **same** : 子进程的编号不会发生改变
- `show follow-exec-mode` : 可以通过该命令查看 `follow-exec-mode` 的模式.
多线程调试
-
info threads
: 所有线程.*
表示当前调试的线程
thread ID
: 指定当前调试的线程号
set scheduler-locking off|on|step
- off : 不锁定任何线程所有线程都执行(默认).
- on : 只有当前被调试程序会执行, 其他线程全部暂停.
- step : 单步调试中. 只有当前线程会执行.
输出问题
有时我们需要输出一个字符串的所有长度, 但是就如同下面一样, 只会输出一部分数据.
-
show print elements
: 可以查看默认输出的字符个数, 一般默认是 200字符 -
set print elements 0
: 设置无限制输出
小结
这里仅仅只是归纳了部分常用的调试命令, 有兴趣的还是去看看gdb文档吧.