gdb(Thumb-2)如何知道堆栈顶部的位置?

时间:2013-11-14 05:06:42

标签: 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 ?? ()

它们很有用,但我想做正确的事并消除最后的进入。什么是GDB寻找信号通知栈顶部,以及我应该在我创建的新任务堆栈上放置什么来帮助它呢?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在DWARF CFI信息中终止堆栈。

对于ARM,气体提供“.cantunwind”指令来执行此操作。在其他架构上,我认为使用cfi_undefined标记帧指针更为正常。