GDB (GNU プロジェクト デバッガー) - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語

GDB は、特に Linux 開発者の間で人気のあるデバッガーです。ザイリンクスでは、システム デバッガーを使用することをお勧めしますが、GDB はベアメタル エンベデッド フローでもサポートされます。ただし、システム デバッガーとは異なり、GDB のサポートは単一のアプリケーション デバッグに限定されます。

エンベデッド ターゲットの GDB には gdbserver が必要です。GDB はフロントエンドを担当し、デバッグ、ブレークポイントの設定、プログラムの停止/再開などのプログラムを指定できます。各ユーザー コマンドは gdbserver に送信され、ターゲットを設定してコマンドを実行します。たとえば、GDB にライン ブレークポイントを追加すると、GDB は ELF 内のデバッグ情報を読み取り、そのラインに対応するアドレスをデコードします。GDB は次に 'plant breakpoint at address' コマンドを gdbserver に発行し、gdbserver はターゲット プロセッサのレジスタに書き込んで、ブレークポイントを配置します。同様のロジックは、ユーザーが発行したすべてのデバッグ コマンドに適用されます。

ザイリンクス エンベデッド フローの場合、hw_server が異なるポート上の各プロセッサ アーキテクチャにごとに gdbserver を起動します。次は、サポートされるアーキテクチャおよびデフォルトの gdbserver をリストしています。

アーキテクチャ gdbserver ポート
Arm® 3000
AARCH64 3001
MicroBlaze 3002
MicroBlaze64 3003

hw_server の起動中に -p<port> を指定すると、ベース ポートを変更できます。たとえば、hw_server -p2345 と指定すると 2345 で Arm の gdbserver を開始し、2346 では AARCH64、2347 では MB、2348 では MB64 の gdbserver を起動します。