GDB调试之多线程
1、set scheduler-locking off/on/step
调试时除了当前线程在运行,要想规定其他线程的运行情况用这个命令,有三个选择:
set scheduler-locking off
:不锁定任何线程,所有线程都可以继续执行,这是默认选项。set scheduler-locking on
:只有当前线程可以执行,其他线程暂停运行。set scheduler-locking step
: 当单步执行某一线程时,其它线程不会执行,同时保证在调试过程中当前线程不会发生改变。但如果该模式下执行 continue、until、finish 命令,则其它线程也会执行,并且如果某一线程执行过程遇到断点,则 GDB 调试器会将该线程作为当前线程。
NOTE:只有线程创建之后这个命令的暂停效果才有效,比如set scheduler-locking on
开启之后,但pthread_create
语句还没执行,这时执行continue
后边创造的线程不会被暂停,必须等线程创造后再执行coneinue
。
2、info threads
显示当前有几个线程,前边有线程ID。
3、thread ID
切换线程,ID为info threads
前边显示的ID。
4、break xxx thread ID
为某个线程设置断点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构