のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

b2g(FirefoxOS) eclipseでデバッグする方法(その2) eclipseの準備

android gdb debug - のねの日記
コマンドラインのgdbclientの方法を応用し、eclipseでデバッグ - のねの日記
linuxでのgdbclientの使い方 - のねの日記

eclipseを起動する。

AndroidのSDKからダウンロードする。
adt-bundle-linux-x86_64-20130219.zipをダウンロードすると、eclipseが含まれている。
(日付のバージョンは何でもいい)

  1. c/c++のperspectiveを開く
  2. Menu>File>New>C++Projectを作成する。
    1. [C++ Projectダイアログ]が開く
    2. Project name:は任意(ここでは、gdbcheckとする)
    3. Project Type:Executable: Empty Projectを選択。
    4. Finishボタンをクリック
  3. Projectを選択し、Menu>Run>Debug Configrationsをクリックする。
    1. [Debug Configrationsダイアログ]が開く。
    2. C/C++ Attach to Applicationをクリックし選択する。
    3. 右クリックでNewを選ぶ。Name:gdccheck Debugというプロファイルが作成される。
      1. [gdbcheck Debug]
        1. [Mainタブ] 特になし
        2. [Debuggerタブ]
        3. Debugger: gdbserverにする。
          1. Debbugger Optionsの[Mainタブ]
          2. GDB debugger: home/user01/B2G_emu/B2G/prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gdb
          3. GDB command file:.gdbinit
          4. Debbugger Optionsの[Shared Librariesタブ]特になし
          5. Debbugger Optionsの[Connectionタブ]
          6. Port number:11043 <= PIDごとに変わるようです。
 $ ./run-eclipse.sh attach 43 <= gdbserverの準備
 GECKO_PATH = /home/user01/B2G_emu/B2G/gecko
 B2G_DEBUG = 1
 B2G_NOOPT = 1
 GECKO_OBJDIR = /home/user01/B2G_emu/B2G/gecko/objdir-gonk-debug
 Attached; pid = 43
 Listening on port 11043 <=ポート番号
 eclipse.sh gdbserver ready.
 gdb:prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gdb
 gdbinit:/tmp/b2g.gdbinit.user01
 prog:/home/user01/B2G_emu/B2G/gecko/objdir-gonk-debug/dist/bin/b2g

 tmpにb2g.gdbinit.user01のファイルが作成される。
 $ cat /tmp/b2g.gdbinit.user01 
 set solib-absolute-prefix out/target/product/generic/symbols
 handle SIGPIPE nostop
 set solib-search-path 
 /home/m_fujii/B2G_emu/B2G/gecko/objdir-gonk-debug/dist/bin
 :out/target/product/generic/symbols/system/lib
 :out/target/product/generic/symbols/system/lib/hw
 :out/target/product/generic/symbols/system/lib/egl
 :out/target/product/generic/symbols/system/bin
 :out/target/product/generic/system/lib
 :out/target/product/generic/system/lib/egl
 :out/target/product/generic/system/lib/hw
 :out/target/product/generic/system/vendor/lib
 :out/target/product/generic/system/vendor/lib/hw
 :out/target/product/generic/system/vendor/lib/egl
target extended-remote :11043

gdbserverに接続できないときは、一度KILLする。

$ adb shell ps | grep gdbserver
root      1991  1989  476    324   c0098770 0001a664 S gdbserver
$ adb shell kill 1991
Terminated 
$ adb shell ps | grep gdbserver
gdbserverのプロセスがないことを確認する。

もう一度接続するPIDを確認する。
$ adb shell ps | grep b2g
root      43    1     191460 94324 ffffffff 40054360 S /system/b2g/b2g
app_1912  1912  43    109452 55568 ffffffff 40054360 S /system/b2g/plugin-container
gdbserverを接続する。
$ ./run-eclipse.sh attach 43

Androidでコマンドラインのgdbclientの方法を応用し、eclipseでデバッグ - のねの日記