Linux で GDB を使用して組み込み ARM アセンブラをデバッグするための一般的な構成方法
要約:
組み込みシステム開発では、ARM アーキテクチャ プロセッサがさまざまな分野で広く使用されています。組み込み ARM アセンブラをデバッグするには、GNU デバッガ (GDB) を使用できます。この記事では、Linux 環境で組み込み ARM アセンブラをデバッグするために GDB を構成する一般的な方法を紹介し、コード例を示します。
.global _start .extern printf .section .data message: .asciz "Hello, World! " .section .text _start: ldr r0, =message bl printf mov r7, #1 swi 0
上記のコードは、まずグローバル ラベル _start
と外部関数 printf
を定義します。次に、文字列 message が
.data セクションで定義され、
ldr と
bl## が .text# で使用されます。 ## セクション。# ディレクティブは文字列の出力を実装します。コードの最後の 2 行では、
mov および
swi 命令を使用してプログラムを終了します。
ARM クロスコンパイル ツール チェーンを使用してコンパイルする
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:shell;toolbar:false;'>$ arm-none-eabi-as -mcpu=cortex-m3 -o program.o program.s
$ arm-none-eabi-ld -o program program.o</pre><div class="contentsignin">ログイン後にコピー</div></div>
where, GDB の構成
$ gdb
(gdb) file program
GDB のターゲット デバイスの構成
us デバッグのためにターゲット デバイスに接続するように GDB を構成する必要もあります。コネクタ パラメータは、次のコマンドを使用して設定できます。(gdb) target remote localhost:1234
1234 が使用されることを前提としています。
アセンブラのデバッグ
(gdb) info registers
プログラムのシングルステップ:
(gdb) step
現在の関数の残りを実行します:
(gdb) next
ブレークポイントを設定します:
(gdb) break main
続行 プログラムの実行:
(gdb) continue
(gdb) x/16x $sp
(gdb) print $r0
(gdb) list
(gdb) quit
https://gcc.gnu.org/onlinedocs/
以上がLinux で GDB を使用して組み込み ARM アセンブラをデバッグするための一般的な構成方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。