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)多线程调试的主要内容,如果未能解决你的问题,请参考以下文章