附加到我的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寻找信号通知栈顶部,以及我应该在我创建的新任务堆栈上放置什么来帮助它呢?
答案 0 :(得分:0)
执行此操作的一种方法是在DWARF CFI信息中终止堆栈。
对于ARM,气体提供“.cantunwind”指令来执行此操作。在其他架构上,我认为使用cfi_undefined标记帧指针更为正常。