|
gdbserver †キーワード: CAT845 CAT724 ラズパイ armhf sh4 準備 †ツールのインストール †開発PC側(debian jessieの場合) # apt-get install gdb-multiarch ターゲット機側 # apt-get install gdb-server (CAT724, CAT845は内蔵ROMに gdbserverが入っているので必要ない) コンパイル †コンパイル時に必ず -g オプション付きでビルドしておきます。 例 $ arm-linux-gnueabihf-gcc -O2 -g -Wall led_control.c -o led_control (armhfの場合) $ sh4-linux-gnu-gcc -O2 -g -Wall led_control.c -o led_control (sh4の場合) デバッグの実際 †ターゲット機側(CAT724, CAT845, ラズパイ等) †# gdbserver 0.0.0.0:1234 ./led_control Process ./led_control created; pid = 541 Listening on port 1234 rootユーザ (コマンドプロンプトが # ) でなくても構いません。通信ポートを 相手(gdbを動かすパソコン)IP:ポート番号 と指定します。IPアドレスを 0.0.0.0 でも構いません。この場合は通信相手がワイルドカードになり、誰でも受付okになるので少し危険です。自分の机の上で実験するときに限ればこれでもよいでしょう。 すでに動いているプロセスにアタッチすることもできます。ps ax でPIDを調べて # gdbserver --attach 0.0.0.0:1234 PID とします。 gdbserver側が待ち受けに入ります。 開発PC側 †実行バイナリ、ソースコードがあるプロジェクトのディレクトリに移動 $ gdb-multiarch --tui ./led_control (armhfの場合) $ sh4-linux-gnu-gdb --tui ./led_control (sh4の場合) (gdb) target remote 172.16.1.11:1234 これで接続します。 listを取る (gdb) l ブレイクポイント (gdb) b 関数名 続き continue (gdb) c 次の行 (gdb) n 変数の表示 (gdb) p fd バックトレース (gdb) bt デバッグの終了 (gdb) detach (gdb) quit 関連 † |