カーネル拡張による LLDB / C++ デバッグ

Android 8.0 リリースには、デベロッパーのデバッグ環境を改善し、より優れたアプリの開発を可能にするカーネル拡張が含まれています。

ARM64 に対応した Android カーネルにより、4 バイトもしくは 8 バイト アライメントに一致しないメモリアドレスに対してウォッチポイントを設定し、そのようなアドレスへのすべてのアクセスをレポートすることが可能です。

実装

この機能は、すべての ARM 64 ビットデバイスで動作します。また、32 ビット ハードウェアまたはカーネルに関連するサポートをオプションで追加できます。必要なカーネルの変更はすべて実施済みです。

この機能は、4.4 以上の一般的なカーネルに含まれています。カーネルに機能がまだ組み込まれていない場合は、必要な CL を選択してカーネルビルドに追加します。なお、カーネルのコードベースが時間の経過とともに改良され、パッチ適用による修正が必要となることから、カーネルのベース バージョンに応じてパッチセットを選択します。

  • ブランチ android-4.4:
  • ブランチ android-4.9:

    この機能は、デバッガの作成をサポートする ptrace API の拡張機能を実装します。

    検証

    上流リポジトリには、カーネルのセルフテスト、CTS テストが用意されています。また、新しいカーネル API の検証用に追加された CTS テストも複数あります。

    https://android.googlesource.com/platform/bionic/+/master/tests/sys_ptrace_test.cpp