2009年9月16日水曜日

gdb(gdbserver)を使ったリモートCPUの共有ライブラリをデバッグする方法

【ビルドマシン】
 デバッグ用ビルド(-O0 -gオプション付きでコンパイル。)
 □libMyLibrary
 □chkcmd(ライブラリデバッグ用コマンド)


【ターゲットCPU】
 □ファイアウォール停止(繋がらなかったら、ビルド、ターゲットCPU両方で。)
  /etc/rc.d/init.d/iptables stop

 □デバッグ用ライブラリに差し替え。
  ファイルrelapce、またはlibMyLibrary.so→リンク先を変更。
  ※パーミッション注意 chmod a+rx libMyLibrary.so.1

 □GDBサーバー起動
  $ gdbserver ビルドマシン名:30000 chkcmd (ビルドマシン名はなくても良い!?)


【ビルドマシン】
 GDB起動 (emacs上で動かした方が便利。)
 $ gdb ./chkcmd

  (gdb) br main

  (gdb) target remote ターゲットCPU名(IPアドレス!?):30000

  (gdb) c

  (ブレークしたら、)

  (gdb) set solib-search-path /home/user/src/libMyLibrary
      (↑ライブラリビルドしたディレクトリへのパスを指定)
   ※↓表示される(他のエラーメッセージ無視)
    Reading symbols from /home/user/src/libMyLibrary/libMyLibrary.1...done.
    Loaded symbols for /home/user/src/libMyLibrary/libMyLibrary.1

  (gdb) br MyLibraryStartAPI ※取り敢えず適当なライブラリ関数にブレークポイント設定

  (gdb) c 後は自由に。



0 件のコメント:

コメントを投稿