(AVR)総会でのシングルステップラインに当りラインデバッグ情報やGDBを出射するようGNUを取得する方法?

StackOverflow https://stackoverflow.com/questions/1275944

質問

私は、アセンブリ内のgdbの行番号デバッグ情報を放出するガスを取得する方法を見つけ出すことはできません。私はAVR-GCCクロスコンパイラを使用しますが、疑問関連性があることだということに注意してください。

私は、アセンブルするには、次のコマンドラインオプションを使用しています: AVR-GCC -g -ggdb -Os -mmcu = atmega644の-ffunctionセクション-fsigned-チャー-Winvalid-PCH -Wall -Wno-長い長-Xアセンブラと-CPP -Wa、-ggdb -C -o z813 .oのz813.s

私はCコードをコンパイルするために、引数のほぼ同一のセットを使用する場合、

、I「はobjdumpは-l -d」を使用して、行番号とソースファイルの増大を見ることができます。

しかし、アセンブリオブジェクトはどれも持っていません。すなわち


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>

それはシンボル名と情報を認識していますが(simulavrリモートGDB接続を介して)AVR-GDBに、私は、私の組み立てコードを単一のステップへのデバッガを得ることができないとき。私はこれが関連していると仮定します。

私はグーグル/情報/男でこれを見つけようとしてそうなフラグを入れ替える良い努力を。すべてのヘルプは感謝!

役に立ちましたか?

解決

あなたはアセンブラソースコードを「コンパイル」すると

、Cコンパイラを呼び出すと、やや過剰です。コンパイラは、入力がCファイルであることを認識し、そのよう-gや-OsなどCのコンパイルに影響を与えるあなたはそれを渡す任意のオプションを無視します。実際にアセンブラに渡されるオプションを表示するコンパイラの行に「-v」を渡します。

私が組み立てたとき

avr-as --gstabs -mmcu=atmega644 a.s -o a.o

私はオブジェクト・ファイルに見栄えの良いソース行情報を取得します。すべての-ggdbオプションをサポートしていません(2.18.0)AVR-としての私のバージョンは、それだけで-g、--gstabs、--gstabs +、--gdwarf-2があります。スタブを使用すると、objdumpは、線を表示することができます。ドワーフ-2では、それはありません - 私はobjdumpの中か、などのバグのかどうかわからないんだけど。

。 あなたは絶対に "GCC" として、アセンブラを起動することを主張した場合、

、あなたは、-Waを渡す必要があります - 。gstabsを

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top