【问题标题】:Why does LLDB refer to the top of the stack trace as the bottom?为什么 LLDB 将堆栈跟踪的顶部称为底部?
【发布时间】:2015-11-14 17:21:05
【问题描述】:

查看 lldb 中的回溯时,我正坐在第 0 帧上,并尝试“向下”移动堆栈,但 lldb 说:

(lldb) down error: Already at the bottom of the stack

在我看来,我正坐在堆栈的顶部,因为它是最顶部的堆栈框架。甚至移动 updown 堆栈的 lldb 命令也似乎向后移动。例如,向下移动将从第 1 帧移动到第 0 帧,其中第 0 帧是我中断的帧。任何想法为什么他们是倒退的?或者为什么我倒退了?还是我错过了调用堆栈的一个基本概念?

【问题讨论】:

标签: debugging lldb


【解决方案1】:

我总是尝试使用术语“较旧”和“较年轻”的堆栈帧,因为这反映了实际发生的情况,而不依赖于堆栈碰巧在内存中增长的方向的细节。但是我们在命令行中使用了updown,主要是因为这就是gdb 所做的,而且这是我们启动lldb 时大多数人习惯使用的命令行调试器。

【讨论】:

  • 感谢您的洞察力。这帮助我更深入地研究了 GDB 文档。最外层(较旧的)帧具有较高的数字,而较年轻的帧具有较低的数字——就像一个年龄一样,真的。 up(实际上是up 1向上移动到更高的数字(年龄)。所以up/down指的是帧号,而不是堆栈的垂直方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2020-02-18
  • 2014-07-27
相关资源
最近更新 更多