GDB多线程调试
多线程顾名思义就是实现多个线程并发执行,简单的说就是同时处理多项任务。我们在开发过程中会经常使用到多线程,当然出现的问题也是不可避免的。我们在这个章节主要讲述的是使用 GDB 调试多线程的程序。
查看线程的相关信息
使用 GDB 调试多线程的程序时,可以使用下面的命令获取线程的信息,命令展示如下:
info threads
显示可以调试的所有线程,GDB 会为每个线程分配一个ID(和 tid 不同),编号一般从 1 开始,当前调试的线程编号前有“*”。
调试多线程
调试多线程的程序和调试普通的单线程的程序是不同的。当我们调试多线程中的某一个线程时,需要对其他线程的状态做一些设置,包括主线程调试时其他线程是否运行以及运行时需要执行的命令。下面是调试多线程命令的详细介绍。
1. 调试线程时,可以做到切换线程,使用命令:
thread [ID]
通过线程的编号切换到指定的线程。实例:
thread 2 //切换到编号为 2 的线程。
2. 为运行中的线程指定执行命令,命令格式展示如下:
thread apply [ID……] [command]
这个命令可以指定多个 ID,使用 all 表示指定所有的线程。command表示执行的命令。实例:
(gdb) thread apply 1 continue // 1号线程执行continue命令。
(gdb) thread apply 1 2 continue //1号和二号线程执行continue命令
(gdb) thread apply all continue //所有的线程执行continue命令
3. 锁定执行的线程,命令格式展示如下:
本文标题:GDB多线程调试
发表评论