6

組み込みプログラミングは初めてですが、組み込みプラットフォームで実行される非常に複雑なアプリケーションをデバッグする必要があります。JTAG インターフェイスを介して GDB を使用しています。

私のプログラムは、ある時点で予期しない方法でクラッシュします。これは、メモリ関連の問題が原因で発生すると思われます。システムがクラッシュして完全に応答しなくなった後、GDB を使用してメモリを検査することはできますか?

4

2 に答える 2

6

それはあなたのセットアップに少し依存します。特に、JTAG を使用しているため、例外 (保護されたメモリへの不正アクセスなど) を検出したときにプロセッサを停止するようにデバッガを設定できる場合があります。そうでない場合は、例外ハンドラーを無限ループに置き換えることができます。次に、例外を手動でアンロールして、クラッシュの原因となったプロセッサの動作を確認できます。通常、そのような状況でもメモリにアクセスでき、GDB を使用して直接参照するか、すべてをファイルにダンプして後で参照できるようにすることができます。

于 2013-01-03T21:19:23.013 に答える
3

何がクラッシュしたかによります。システムが応答しない場合 (無限ループ、デッドロックなど)、通常は GDB に応答し、バックトレース (コール スタック) などを確認できます。システム/バス/CPU が実際にクラッシュした場合(下位レベルで)、おそらく応答しません。この場合、疑わしい場所/変数にブレークポイントを設定して、何が起こっているかを観察できます。また、シミュレーター (ISS、RTL - 該当する場合) は、動作を HW と比較するのに便利です。

于 2013-01-03T22:17:04.533 に答える