gdb(Thumb-2)如何知道堆栈的顶部在哪里?

gdb(Thumb-2)如何知道堆栈的顶部在哪里?,gdb,arm,stack-trace,cortex-m3,Gdb,Arm,Stack Trace,Cortex M3,连接到Cortex-M3代码的GDB为我提供了如下堆栈跟踪: #0 0x00000992 in zeptos_mod_svc () #1 0x00000d36 in Uart_ReadChar (uart=3) at src/zeptos/drivers/uart.c:60 #2 0x00000d6c in gsmgps_entry () at src/vectr/gsmgps.c:13 #3 0x00000000 in ?? () 它们很有用,但我想做正确的事情,并删除最后的条目。G

连接到Cortex-M3代码的GDB为我提供了如下堆栈跟踪:

#0  0x00000992 in zeptos_mod_svc ()
#1  0x00000d36 in Uart_ReadChar (uart=3) at src/zeptos/drivers/uart.c:60
#2  0x00000d6c in gsmgps_entry () at src/vectr/gsmgps.c:13
#3  0x00000000 in ?? ()

它们很有用,但我想做正确的事情,并删除最后的条目。GDB在寻找什么来表示堆栈顶部,我应该在我创建的新任务堆栈上放置什么来帮助它呢?

一种方法是在DWARF CFI信息中终止堆栈

特别是对于ARM,gas提供了一个“.cantundwind”指令来执行此操作。在其他架构上,我认为使用cfi_undefined来标记帧指针更为正常