お仕事で、gdbを使ってクロスプラットフォームのリモートデバッグをやったのでメモ。
gdbについてはマニュアルを見てもらうとして、リモートデバッグの手順を書いてみます。
準備
手順
gdbについてはマニュアルを見てもらうとして、リモートデバッグの手順を書いてみます。
準備
- ターゲットマシンと開発ホストがシリアル又はLANで繋がっていること
- 開発ホストにターゲットマシン用のクロスgdbがインストールされていること
- ターゲットマシンにgdbserverがインストールされていること
- 開発ホストにデバッグ対象の実行ファイルとソースがあること(-ggdb つきでコンパイルされていること)
- ターゲットマシンにデバッグ対象の実行ファイルがあること
手順
- ターゲットマシンでデバッグ対象のプログラムとgdbserverを起動する
- 実行ファイルが直接起動できる場合
- 実行ファイルが直接起動できない場合
- GUI等から実行ファイルを起動する
- ps等でデバッグ対象のPIDを調べる
- gdbserverを起動する
- 開発ホストでgdbを起動する
- gdb上でリモートデバッグを指示する
- あとは、普通にgdbとして使えば良い
- デバッグをやめるときは detach と入力する。
# gdbserver 0.0.0.0:5555 prog arg...※ 5555 の部分は任意のポート番号。(LANの場合。シリアルの場合は、0.0.0.0:5555の代わりにシリアルのデバイスファイル名)
※ prog arg... の部分は、デバッグ対象の実行ファイルとコマンドラインパラメータ
# gdbserver 0.0.0.0:5555 --attach PID
# gdb prog※ prog はデバッグ対象のプログラム。gdbはターゲット環境用のもの。
(gdb) target remote x.x.x.x:5555※ x.x.x.x は ターゲットマシンのIPアドレス。
gdbでリモートデバッグの続きを読む