如何在gdb中更改执行线程?

时间:2015-02-01 00:58:42

标签: linux gdb kgdb

我目前正在使用KGDB调试内核代码。 每当我进入时,我自然会跳转到kgdb的中断处理程序。 在GDB下,我运行了以下命令。

info threads 

,输出为

7 irq_stack_union()中的7个线程7(rcu_sched)0x0000000000000000

6 irq_stack_union()中的线程5(kworker / 0:0H)0x0000000000000000

irq_stack_union()中的5个线程3(ksoftirqd / 0)0x0000000000000000

irq_stack_union()

4线程2(kthreadd)0x0000000000000000

3 irq_stack_union()

中的线程1(init)0x0000000000000000

irq_stack_union()中的2个线程3754(Xorg)0x0000000000000000

  • 1个主题4294967294(shadowCPU0)kgdb_breakpoint()

    在kernel / debug / debug_core.c:1042

然后我会跳过代码,期望最终进入另一个线程(我对Xorg感兴趣)然而,在我单步执行代码后,下一个执行的线程变为cpu idle。

info thread
  • 1内核4294967294(shadowCPU0)cpu_idle_loop()在kernel / cpu / idle.c:116

如何将调试上下文切换到Xorg或任何其他线程,另外irq_stack_union()的含义是什么。线程空闲等待中断?

1 个答案:

答案 0 :(得分:3)

根据官方文档,只是thread threadno https://sourceware.org/gdb/onlinedocs/gdb/Threads.html