これで、ARMデータアボート例外が発生していることがわかりました。例外自体(STLライブラリの不正なアドレス)をトラップする方法はわかりましたが、例外の前にスタックフレームに戻りたいと思います。IARツールチェーンを使用していますが、例外が発生するとコールスタックが使用できなくなると表示されます。ツールにコールスタックを表示するように説得するためのトリックな方法はありますか?すべてのクイックヘルプをありがとう!
質問する
10461 次
1 に答える
7
ARM ARM (ARM アーキテクチャ リファレンス マニュアル、「arm arm」をググってください) を見ると、Programmers Model -> Processor Modes and Registers セクションがあります。アボート モードの場合、アボート モードからスーパーバイザー モードに切り替えてから r13 のコピーを作成し、アボート モードに戻って r13 のコピーからスタックをダンプすることができます。r14 は、アボートが発生した場所も示します。
この中止がアラインメントによるものであったとしても、私は驚かないでしょう。下位 2 ビットがゼロ以外のアドレスを持つワード、またはアドレス セットの lsbit を持つハーフワードを読み書きしようとしています。実際、アボートとユーザー/スーパーバイザーが同じレジスタ空間を使用しているため、リンクレジスタとレジスタのダンプ (r0-r12) を取得すると、アボートの原因となった命令とアドレスを調べて、それが実際にアライメントの問題か何か。pc は、アボートしたサムまたはアームのモードに応じて、1、2、または 3 命令進んでいることに注意してください。サムをまったく使用していない場合、これは心配する必要はありません。
于 2009-09-01T00:21:08.083 に答える