アセンブリでgdbの行番号デバッグ情報をGASに送信する方法を理解できません。私はavr-gccクロスコンパイラを使用していますが、それが適切かどうかは疑問です。(AVR)アセンブリのシングルステップラインにGNU ASが行ごとのデバッグ情報やGDBを出力する方法を教えてください。
以下のコマンドラインオプションを使用してアセンブルしています: avr-gcc -g -ggdb -Os -mmcu = atmega644 -function-sections -fsigned-char -Winvalid-pch -Wall -Wno-long-long -xアセンブラと-with-cpp -Wa、-ggdb -c -o z813.o z813.s
Cコードをコンパイルするのにほぼ同じ引数セットを使用すると、行番号とソースファイルの拡張が表示されます'objdump -l -d'を使用します。
ただし、アセンブリオブジェクトには何もありません。それはシンボル名と情報を認識しないものの、すなわち
(simulavrリモートGDB接続を介して)
000000d4 <run_timetable>:
d4: 0e 94 57 00 call 0xae ; 0xae <run_timetable_row>
d8: 0e 94 b4 00 call 0x168 ; 0x168 <delay>
vs
00000f9c :
main():
/home/braddock/work/tviki/tviki/scratch/z813-vid.c:68
f9c: 0e 94 ae 07 call 0xf5c ; 0xf5c <init>
/home/braddock/work/tviki/tviki/scratch/z813-vid.c:70
fa0: 0e 94 6a 00 call 0xd4 ; 0xd4 <run_timetable>
ときAVR-GDBで、私は、私の組み立てコードを単一のステップにデバッガを取得することはできません。私はこれが関連していると思います。
これをinfo/man/googleで見つけようとしている可能性があります。どんな助けにも感謝!
ありがとうございました! --gstabsオプションを使用しました。私が試みていた無効な-ggdbオプションについて苦情を受けなかった理由はわかりません(実際にはうまくいきませんでしたが、私が - dwarf-2設定から変更したと思います)後でそのモードのための別個の行番号ファイルのためのオプション)。 私は完全なプリプロセッサを必要とするため、gcc経由で実行していますが、無視されたフラグや渡されたフラグも不明です。ガスから直接cppを呼び出す方法を理解することはできませんが、あなたは私のフラグを整える時間をとるように促しました。:) – braddock
私は今、avr-asの最新バージョンにバグがあることを知りましたこれにより、アセンブリ内のgdwarf-2デバッグシンボルが正しく出力されなくなります。 ここでの詳細、パッチ、パッチ付きバイナリ: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=77693 – braddock
「as」(gccではなく)を直接起動すると、 '-g'私のために働いた。 '--gstabs'がうまく動作しない場合は試してみる価値があります。構成はさまざまです。 – doug65536