GDB多线程常用指令,可以参考的文档
默认调试多线程的时候,一旦进程中断,所有线程暂停,如果在执行当前线程,其他线程同时执行,gdb7.0其他线程默认不暂停
start
:程序运行到main函数的第一行run(r)
:开始指向,自动停止到第一个断点continue(c)
:继续运行,直到运到断点,或者程序结束break(b)
:设置断点info break
:查看断点信息enable/disable/delete 断点编号
:启用断点、禁用断点、删除断点print(p)
:查看变量参数的值info threads
:查看线程信息thread + 线程编号
:切换线程backtrace(bt)
:查看调用堆栈frame(f)
:跳堆栈next(n)
:执行下一条代码step(s)
:进入函数内部,如果没有函数和next
一样list +/- 数量
:显示行数代码
GDB多进程常用命令,多进程调试
父进程fork产生子进程,默认只调试当前父进程,且默认子进程在调试的时候是运行的,其他子进程的执行状态应该也是看版本
info inferiors
:查看进程列表,标志*就是当前调试的进程attach pid
:绑定进程id,用于绑定正在运行的进程,gdb就会切换到当前执行的进程,并且并且当前进程会暂停inferior id
:切换到指定进程上进行调试print &_exitcode
:显示进程退出时的返回值set follow-fork-mode child
:追踪子进程;set follow-fork-mode
只要选定了,调试过程中,不能修改目标进程,如果想切换其他进程需要设置set detach-on-fork off
set follow-fork-mode parent
:追踪父进程,默认设置set detach-on-fork on
:fork调用时只追踪其中一个进程,默认设置,调试一个进程的时候其他进程正常执行,也就是说只能调试一个进程set detach-on-fork off
:fork调用时会同时追踪父子进程,调试一个进程的时候其他进程被挂起,可以调试多个进程show detach-on-fork
:查看当前调试环境中,detach-on-fork
的值set schedule-multiple on
:调试某进程时,其他进程正常执行