GDB调试实战(10)多线程调试

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GDB调试实战(10)多线程调试相关的知识,希望对你有一定的参考价值。

使用gdb调试多线程时,和调试单线程时类似,但是需要附加使用几个命令来协助进行线程切换。

a-首先是使用info threads查看当前有哪些线程,当前所在线程。

b-然后使用threads id切换到其它线程。

c-最后用thread apply id|all command 来把命令在某线程或所有线程下执行,这里的command就是你平常敲的gdb命令。例如,你是否遇到过在线程里设置断点,程序停住之后,你试图按下n单步运行,你会发现运行的下一步并非是本线程断点的下一条语句,有点找不到北。其实应该执行thread apply id n , id替换成通过thread id查看到的id。

d-线程来回切换比较麻烦,我们可以锁定只执行某个线程:

只运行当前线程:set scheduler-locking on
取消锁定:set scheduler-locking off

来个实例实战下。

#include <pthread.h>
#include <stdio.h>
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于GDB调试实战(10)多线程调试的主要内容,如果未能解决你的问题,请参考以下文章

从实践到原理掌握 GDB

从实践到原理掌握 GDB

从实践到原理掌握 GDB

从实践到原理掌握 GDB

GDB调试多线程

GDB多线程调试分析