多线程调试基本命令:
info threads:显示当前可调试的所有线程,GDB会给每一个线程都分配一个ID。前面有*的线程是当前正在调试的线程。
thread ID:切换当前调试的线程为指定ID的线程。
thread apply all command:让所有被调试的线程都执行command命令。
thread apply ID1 ID2 … command:让线程编号是ID1,ID2…等等的线程都执行command命令。
set scheduler-locking off|on|step:在使用step或continue命令调试当前被调试线程的时候,其他线程也是同时执行的,如果我们只想要被调试的线程执行,而其他线程停止等待,那就要锁定要调试的线程,只让他运行。
off:不锁定任何线程,所有线程都执行。
on:只有当前被调试的线程会执行。
step:阻止其他线程在当前线程单步调试的时候抢占当前线程。只有当next、continue、util以及finish的时候,其他线程才会获得重新运行的
show scheduler-locking:查看当前锁定线程的模式。
//示例:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>