为什么 LLDB 将堆栈跟踪的顶部称为底部?

Why does LLDB refer to the top of the stack trace as the bottom?

在 lldb 中查看回溯时,我正坐在第 0 帧,并尝试移动 "down" 堆栈,但 lldb 说:

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

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

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