gdb中如何区分内核栈和用户栈?

How to distinguish kernel stack and user stack in gdb?

提问人:Frontier_Setter 提问时间:9/19/2023 更新时间:9/19/2023 访问量:30

问:

我尝试使用 gdb 来分析核心转储文件。堆栈帧已损坏,因此无法直接使用 bt 指令。我尝试使用 rbp 手动回溯。我的第一个堆栈帧的 rbp 是 0x7fxxxxxxxxxx,所以我怀疑它处于内核模式。

我应该如何返回到用户堆栈?

调试 GDB 内核

评论


答:

2赞 Employed Russian 9/19/2023 #1

所以我怀疑它处于内核模式。

你的怀疑是错误的:

  1. 当您不调试内核本身时,GDB 永远不会显示任何内核模式堆栈(此处就是这种情况)。
  2. 程序主线程的 (和) 的值通常如下所示: -- 它没有任何“内核”。RSPRBPx86_640x7fffffffd8b0

评论

0赞 Frontier_Setter 9/20/2023
那么我可以通过访问当前 rbp 地址对应的内存来直接获取上一个堆栈帧的 rbp 地址吗?