2

附加到我的 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 在寻找什么来表示堆栈的顶部,我应该在我创建的新任务堆栈上放置什么来帮助它?

4

1 回答 1

0

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

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

于 2013-11-18T06:15:34.347 回答