在 DWARF2 调试格式中,借助 .debug_frame 部分中的 CFI(调用帧信息)支持堆栈展开。这正是一个表格,它为每个寄存器在前一帧中获取其值保留了一条规则。但是,所有这些规则都依赖于寄存器保存在堆栈中某个位置的事实。当没有帧指针时,这对于在前一帧寄存器中获取堆栈指针的值是不正确的。在这种情况下,堆栈指针可能不会保存在堆栈上,而只是通过递增和递减其值来管理。但是,在 dwarf2(或一般的 dwarf 格式)中没有办法表明寄存器值是其当前值的表达式。所以,我的问题是,如何在使用 dwarf2 调试格式的堆栈展开期间获取堆栈指针的值(当没有帧指针时)。
-BV