gdb 中的“堆栈”部分是什么

塞缪尔布罗迪1249

在 gdb 中,似乎“堆栈”部分中的任何内容始终与%rip寄存器相同例如:

rip 0x0000555555554603
─── Stack ────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000555555554603 in main

做完之后si

rip 0x0000555555554606
─── Stack ────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000555555554606 in main

gdb 中的“堆栈”部分究竟是什么?在我看来,它或多或少是%rip当前正在运行的函数中的指令指针 ( ) (以及%rip尚未完成执行的调用堆栈中的前一个s)。这是否正确,或者本节告诉我们什么?

如果有用,这是我在 gdb 中使用的前端,称为gdb dashboard

在此处输入图片说明

欧米

那就是调用栈。GDB 使您能够查看调用堆栈,因此您可以了解您是如何到达当前位置的(您通过哪些函数调用到达了当前位置)。

调用堆栈是已调用但尚未返回的函数列表,从第 0 帧的当前函数开始,一直到最后一帧的 main 函数。

在您的特定情况下,您的调用堆栈只是主要的,因为您没有调用其他函数(或者因为它们已经返回)。%rip 指向当前指令,因此您在当前帧中的位置始终与其内容相对应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章