5

みなさん、こんにちは。Stackoverflowに投稿したことはありませんが、何年もの間、いつもここに助けを求めてきました。

STLINKSTM32ディスカバリーボードを使用したEclipseでのデバッグに関して質問と問題があります。私はオンラインで答えを探し、多くのチュートリアルに従いましたが、それでも正しく機能させることができないようです。ここで頑張って聞いてみます。

コンパイラとgdbサーバーを使用してEclipse環境を正しくセットアップしました(私の知る限り)。まず、Eclipseでdebugを押す前に、サーバーが起動していることを確認します。AtollicSTLINKgdbサーバーを使用しています。デバッグ中に多くのarm-none-eabi-gdbタイプのexeを試しましたが、すべて同じように見えます。私のデバッグ構成は、ポート61234(Attolic)でarm-none-eabi-gdbを使用するように設定されています。debugを押すと、プログラムが正しく起動し、Eclipseのデバッグビューに入ります。プログラムは私のディスカバリーボードに正しくダウンロードされます。デバッグが部分的に機能するようになり、コンパイルされたコードとデバッグ構成の起動オプションに応じて、「いくつかの」場合にクラッシュすることなくコードをステップ実行したため、これを知っています。コードは、ボード上でオンになる単純なLEDです。USBケーブルを抜いて再度差し込むと、コードは正常に実行されます。

問題は実際のデバッグ手順にあります。99%の確率で、Eclipseの上部にあるデバッガコマンドを使用していくつかの「ステップイン」を実行した後、デバッグビューでarm-none-eabi-gdb.exeプログラムがクラッシュします。メイン関数の最初の行に到達した後、最初の行にステップインしようとすると、arm-eabi.exeプログラムのWindowsクラッシュが発生します。Eclipseのデバッグコンソールはgdbエラーを読み取ります:....... dwarf2:C10xx内部エラー-不明なCFAルール。さて...スタートアップタブに関してデバッグ構成でオプションを設定する方法に応じて、異なるオプションは異なる結果を生成し、次のオプションが切り替えられました:停止、再開、ブレークポイント:メインなど。このクラッシュまた、main関数でコンパイルされているコードに依存しているようです。

さて、これは、gdbサーバーおよびarm-none-eabi-gdb.exeプログラムで使用されるコンパイラに依存しますか?たとえば、Atollic、Keil、コードソース、IARを使用してコードをコンパイルした場合、Attollicgdbサービス+arm-none-eabi-gdbプログラムは、コンパイルされた任意のコードで機能しますか?生成されていないシンボルがどこかにありませんか?参考までに、IARコンパイラツールセットのEVALバージョンを使用しています。STLINKを使用して埋め込みワークベンチで同じコードを使用してプロジェクトを作成すると、コードは正常にコンパイルおよびデバッグされます。

CFAルールとは何ですか?フレームアドレスを呼び出しますか?プログラムにスタックポインタなどを設定していませんか?IARコンパイラがcstartupのすべてのジャンクを処理していると思いました。

どんな助けでも大歓迎です。

ありがとう、LostTime77

4

0 に答える 0