ITPub博客

首页 > 数据库 > 数据库开发技术 > gdb调试中切换线程

gdb调试中切换线程

原创 数据库开发技术 作者:DBA札记 时间:2024-08-01 16:44:51 0 删除 编辑

在 GDB 中切换线程可以使用以下命令:

  1. info threads: 查看当前进程中所有的线程。
  2. thread N: 切换到线程 N,其中 N 是线程号。
  3. set scheduler-locking off/on/step: 设置调度器锁定模式。
  • off: 允许所有线程运行。
  • on: 只有当前线程被允许运行。
  • step: 只有当前线程和被调试的线程被允许运行。

示例:

(gdb) info threads
  Id   Target Id         Frame
* 1    Thread 0x7ffff7ffa740 (LWP 23456) "program" 0x00007ffff7de5390 in __GI___libc_read (fd=0, buf=0x7fffffffe4e0, nbytes=4096) at ../sysdeps/unix/sysv/linux/read.c:27
  2    Thread 0x7ffff77fe740 (LWP 23457) "program" 0x00007ffff7de5390 in __GI___libc_read (fd=0, buf=0x7fffffffe4e0, nbytes=4096) at ../sysdeps/unix/sysv/linux/read.c:27
  3    Thread 0x7ffff6ffd740 (LWP 23458) "program" 0x00007ffff7de5390 in __GI___libc_read (fd=0, buf=0x7fffffffe4e0, nbytes=4096) at ../sysdeps/unix/sysv/linux/read.c:27

(gdb) thread 2
[Switching to thread 2 (Thread 0x7ffff77fe740 (LWP 23457))]
#0 0x00007ffff7de5390 in __GI___libc_read (fd=0, buf=0x7fffffffe4e0, nbytes=4096) at ../sysdeps/unix/sysv/linux/read.c:27
(gdb) set scheduler-locking on
(gdb) next

这样就可以在不同的线程之间切换,并控制线程的调度。scheduler-locking 命令可以限制 GDB 只调试当前线程,从而避免因为其他线程的影响而产生问题。



欢迎关注公众号:DBA札记,一起交流数据库技术。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!谢谢大家。

原文作者:DBA札记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-01-18

  • 博文量
    90
  • 访问量
    40025