Android Studioを使用したネイティブデバッグ
このセクションでは、Android Studioでサンプルのネイティブアプリをデバッグしてみます。
プロジェクトインポート時に作成されたデフォルト構成では、Javaのデバッグだけがサポートされます。
Android Studioツールバーの[Configurations (構成)]ドロップダウンメニューから[Edit Configurations (構成の編集)...]を選択します。

下に示されているように[Android App (Androidアプリ)]構成を新規作成します。

[Run/Debug Configuration (構成の実行/デバッグ)]ダイアログボックスの[General (一般)]タブで、構成の名前を指定し、モジュールを選択します。

[Run/Debug Configuration (構成の実行/デバッグ)]ダイアログボックスの[Debugger (デバッガー)]タブで、[Debug type (デバッグの種類)]を[Native (ネイティブ)]に変更し、シンボルパスを追加します。

ndk-buildにより、ストリップされたライブラリがlibs/ディレクトリ内に置かれることに注意してください。シンボル検索パスがobj/local/<arch>ディレクトリを指すようにする必要があります。これは再帰検索パスではないため、obj/local/armeabi-v7aディレクトリのフルパスを設定する必要があります。

AInputQueue_preDispatchEventにおいてSIGILL (illegal instruction)でアプリクラッシュが発生する場合、LLDBのSIGILLハンドラーを無効にするという回避方法があります。これを行うには、次の手順を実行します。
- Android Studioでアプリを開きます。
- [Run (実行)]>[Edit Configurations (構成の編集)]の順に開きます。
- [Run/Debug Configurations (構成の実行/デバッグ)]ウィンドウで、左側のペインで対象アプリが選択されていることを確認し、右側のペインで[Debugger (デバッガー)]タブをクリックします。
- [Debugger (デバッガー)]タブで、下の[LLDB Post Attach Commands (LLDBポストアタッチコマンド)]タブをクリックします。
- 右側の[+]をクリックし、次のコマンドを追加して、Enterを押します。
process handle --pass true --stop false --notify true SIGILL
- [OK]をクリックして変更を適用します。