【Android】【NDK】NDKで作成したCプログラムをデバッグする
NDKで作成したCプログラムをgdbでデバッグする方法です。
■デバッグするためにやっておくこと
※デバッグビルドをした場合、最適化が行われないため性能劣化すると言われています。性能試験やリリース時には NDK_DEBUG=1 をはずしましょう。
以上を行った上で.apkファイルを実機orシミュレータにインストールしておきます。
■いざデバッグ
初期化処理などでCプログラムを利用している箇所のデバッグをしたい場合は
JAVA側でCの処理を呼び出す前にブレークポイントを張って処理止める必要があります。
通常のJAVA側のデバッグ方法でブレークポイントまできたら、ターミナルで以下の
コマンドを実行します。
$ ndk-gdb
成功すれば、(gdb) とでて対話式の画面になるはずですので、Cの部分のデバッグはこれで行えます。
※gdbの使い方に関してはここでは説明しません。
なお実機でデバッグ時に ndk-gdb を実行すると以下のエラーが出る場合があります。
$ ndk-gdb ERROR: Could not extract package's data directory. Are you sure that your installed application is debuggable?
どうやら実機にアプリが多くインストールされていると起きるバグのようです。
以下のサイトに解説があります。
http://blog.kmckk.com/archives/3960006.html
自分は諦めてシミュレータでデバッグしました…。
参考書