Debugging With mGBAを翻訳したものです。
- ROMをmGBAで開く
- mGBAのデバッグサーバーUIを開く(MacOSの場合は、
open Tools -> Start GDB server
) - オプションを指定して、
Start
- ターミナルを開いて、
/opt/devkitpro/devkitARM/bin/arm-none-eabi-gdb
と叩き、GDBを実行する - GDBのシェル内で、
target remote localhost:2345
を実行(3のオプションによってlocalhost:2345
を調整してください) - GDBのシェル内で、
file <path_to_elf>
を叩く(確認時にはy
)
ターゲットとは、 ユーザ・プログラムが持つ実行環境を指します。 多くの場合、 GDBはユーザ・プログラムと同一のホスト環境上で実行されます。 この場合には、 fileコマンドやcoreコマンドを実行すると、 その副作用としてデバッグ・ターゲットが指定されます。
例えば、 物理的に離れた位置にあるホスト・マシン上でGDBを実行したい場合や、 シリアル・ポート経由でスタンドアロン・システムを制御したい場合、 または、 TCP/IP接続を利用してリアルタイム・システムを制御したい場合などのように、 より多くの柔軟性が必要とされる場合、 targetコマンドを使うことによって、 GDBに設定されたターゲットの種類の中から1つを指定することができます。
target remote dev
GDB固有のプロトコルによる、 リモートのシリアル・ターゲットです。 引数dev
によって、 接続を確立するために使用するシリアル装置 (例えば、 /dev/ttya
) を指定します。 リモート・デバッグを参照してください。 target remote
は、 load
コマンドもサポートするようになりました。 これは、 スタブをターゲット・システム上に持っていく方法が別にあり、 かつ、 ダウンロードが実行されたときに破壊されないようなメモリ域にそれを置くことができる場合にのみ役に立ちます。
filename
で指定されるプログラムをデバッグ対象にします。
そのプログラムは、 シンボル情報とメモリ内容を獲得するために読み込まれます。 また、 ユーザがrun
コマンドを使用したときに実行されます。
ユーザがディレクトリを指定せず、 そのファイルがGDBの作業ディレクトリに見つからない場合、 シェルが実行すべきファイルを探すときと同様、 GDBは、 ファイルを探すべきディレクトリのリストとして環境変数PATHの値を使用します。
path
コマンドによって、 GDB、 ユーザ・プログラムの両方について、 この変数の値を変更することができます。 ファイルをメモリにマップすることのできるシステムでは、 補助的なファイルfilename.syms
に、 ファイルfilename
のシンボル・テーブル情報が格納されることがあります。
このような場合、 GDBは、 filename.syms
というファイルからシンボル・テーブルをメモリ上にマップすることで、 起動に要する時間を短くします。 詳細については、 (以下に説明するfileコマンド、 symbol-file
コマンド、 add-symbol-file
コマンドを実行する際にコマンドライン上で使用可能な) ファイル・オプションの-mapped
、 -readnow
の説明を参照してください。