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

Ran*_*Guy 10 linux gdb kgdb

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

info threads 
Run Code Online (Sandbox Code Playgroud)

输出将是

7    Thread 7 (rcu_sched) 0x0000000000000000 in irq_stack_union ()

6    Thread 5 (kworker/0:0H) 0x0000000000000000 in irq_stack_union ()

5    Thread 3 (ksoftirqd/0) 0x0000000000000000 in irq_stack_union ()

4    Thread 2 (kthreadd) 0x0000000000000000 in irq_stack_union ()

3    Thread 1 (init)   0x0000000000000000 in irq_stack_union ()

2    Thread 3754 (Xorg) 0x0000000000000000 in irq_stack_union ()

* 1    Thread 4294967294 (shadowCPU0) kgdb_breakpoint ()

    at kernel/debug/debug_core.c:1042
Run Code Online (Sandbox Code Playgroud)

然后我会跳过代码,期望最终在不同的线程中结束(我对 Xorg 感兴趣),但是在我单步执行代码后,下一个执行线程将变为 cpu 空闲状态。

info thread

* 1    Thread 4294967294 (shadowCPU0) cpu_idle_loop () at kernel/cpu/idle.c:116
Run Code Online (Sandbox Code Playgroud)

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

Koo*_*gle 11

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