提问人:Frontier_Setter 提问时间:9/19/2023 更新时间:9/19/2023 访问量:30
gdb中如何区分内核栈和用户栈?
How to distinguish kernel stack and user stack in gdb?
问:
我尝试使用 gdb 来分析核心转储文件。堆栈帧已损坏,因此无法直接使用 bt 指令。我尝试使用 rbp 手动回溯。我的第一个堆栈帧的 rbp 是 0x7fxxxxxxxxxx,所以我怀疑它处于内核模式。
我应该如何返回到用户堆栈?
答:
2赞
Employed Russian
9/19/2023
#1
所以我怀疑它处于内核模式。
你的怀疑是错误的:
- 当您不调试内核本身时,GDB 永远不会显示任何内核模式堆栈(此处就是这种情况)。
- 程序主线程的 (和) 的值通常如下所示: -- 它没有任何“内核”。
RSP
RBP
x86_64
0x7fffffffd8b0
评论
0赞
Frontier_Setter
9/20/2023
那么我可以通过访问当前 rbp 地址对应的内存来直接获取上一个堆栈帧的 rbp 地址吗?
上一个:在 GDB 中设置时间戳记录器
评论