android下長距離GDBデバッグ


ここでは、PC端末を通じてGDBを通じて、ターゲットボード(android機器、携帯電話など)を遠隔的に調整することができます。4.0バージョンのandroidの下にgdbserverがあります。prebuiltまたはoutディレクトリの下で見つけられます。gdb clientはprebuiltにあります。
AndroidでのターゲットボードのGDBデバッグは、LinuxによるGDBのデバッグであり、その手順は以下の通りである。
1ターゲットボードでgdb serverを起動し、ターゲットボードとシンクホストはTCPプロトコルで通信します。ADBはこのような通信が可能である。adbshellを使ってターゲットボードに入るshell、そしてgdbserver:5039/system/bin/mediaserver、これは5039ポートを通じてファイルを傍受できるという意味です。成功すれば、Process mediaserver createdが表示されます。pid=4216 Listening on port 5039。この時ターゲットボードはもう準備ができました。ホストの接続と制御の調整を待ちます。
gdbserver :5039 /system/bin/mediaserver
2 adbを利用してTCP接続を開き、コマンドは以下の通りである。
adb forward tcp:5039 tcp:5039
シンクホストのポート5039とターゲットボードのポート5039とが接続され、通信が可能になる。
3そしてgdbを使ってデバッグします。注意シンクホスト上の実行可能なプログラムとターゲットマシン上の実行可能なプログラムは一貫して保持し、コンパイルする時に-gオプションパラメータを利用してコンパイルします。スタティックライブラリまたはダイナミックライブラリの実行状況を追跡したいなら、すべてのデバッグを開いて、プロジェクト全体をコンパイルしなければなりません。以下のコマンドを実行する場合、ICSのディレクトリの下で注意します。
prebuilt/Linux/toolchain-eabi-42.1/bin/arm-eabi-gdb  out/target/product/product-name/smbors/system/bin/mediaserver
4パラメータを設定します。solib-absolute-pathは記号の検索パスを設定しています。もしあるライブラリが検索パスで見つけられないなら、solib-search-pathを設定する必要があります。
set solib-absolute-prefix /absolute-source-path/out/target/product/product-name/symbols
set solib-search-path /absolute-source-path/out/target/product/product-name/symbols/system/lib
5ターゲットボードを接続し、接続が成功したら、次にRemote debuggg from hostを表示します。この時接続が成功すれば、普通のGDBのようにcontiue、next、step、list、breakなどでデバッグできます。
target remote :5039
6 and roid gdb debug参照
http://www.kandroid.org/online-pdk/guide/debugging_gdb.