• 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. 锁定执行的线程,命令格式展示如下:

更多...

加载中...