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 は、スタックのトップに信号を送るために何を探していますか? また、GDB を支援するために作成した新しいタスクのスタックに何を配置する必要がありますか?

4

1 に答える 1

0

これを行う 1 つの方法は、DWARF CFI 情報でスタックを終了することです。

特に ARM の場合、gas はこれを行うための ".cantunwind" ディレクティブを提供します。他のアーキテクチャでは、cfi_undefined を使用してフレーム ポインタをマークする方が普通だと思います。

于 2013-11-18T06:15:34.347 に答える