1

私の学校の研究室では、arm-elf-gdb を使用して (アセンブリで記述された) プログラムを段階的にデバッグするように依頼されました。_start にブレーク ポイントを設定し、プログラムを実行してステップ スルーすると、レジスタの現在の値が表示されます。ただし、ステップ実行しようとすると、デバッガーはレジスターの値を表示しません。「i r」を使用してレジスタの最終値を表示しましたが、値が段階的に変化するのを確認する必要があります。デバッガーが値を表示しない理由は何ですか?

前もって感謝します。

アセンブリ コード:

        .text                          @ Executable code below

_start: .global _start                 @ "_start" is required by the linker
        .global main                   @ "main" is the main program

        b       main                   @ Start the main program

main:                                  @ Entry to function "main"

        mov     r0, #10
        mov     r1, #3
        add     r2, r1, r0             @ r2 = r1 + r0
        sub     r3, r0, r1             @ r3 = r1 - r0
        mul     r1, r0, r1             @ r1 = r0 * r1
        swi     0x11                   @ Software interrupt to terminate

        .end
4

2 に答える 2

1

gdb の表示コマンドを使用できます。ただし、すべてのレジスタを手動で追加する必要があります。

display $r0
display $r1
...

gdb 起動スクリプト (-x パラメーター) を使用すると、入力の手間を省くことができます。

于 2013-11-11T08:11:36.143 に答える