Men-debug kode platform

Android Studio untuk Platform (ASfP) mengintegrasikan pen-debugan platform multi-bahasa di sekitar tab Lampirkan di jendela alat Debug:

  • Pilih Run > Attach to Android Process (Control+Alt+A) untuk melampirkan Java debugger, Native debugger (LLDB yang di-bundle), atau keduanya ke aplikasi atau proses sistem yang sedang berjalan di perangkat fisik atau perangkat virtual Cuttlefish.
  • Periksa setiap pustaka bersama (.so) yang dimuat dan ID Build ELF delapan karakternya di panel Libraries sebelum melampirkan—dengan ikon tanda centang yang memverifikasi simbol debug lokal yang cocok di bagian out/target/product/<device>/symbols.
  • Kelola prasyarat perangkat dari toolbar: filter dengan Tampilkan proses sistem, klik Root Perangkat untuk menjalankan adb root (menampilkan Perangkat yang telah di-root saat aktif), dan klik Aktifkan JDWP untuk mengaktifkan JDWP pada build userdebug.
  • Tetapkan titik henti bersyarat dan pengecualian, lihat nilai variabel inline di editor, gunakan Drop Frame dan Step Into cerdas, serta periksa jenis C++ dan Rust terstruktur saat runtime.

Sebelum menggunakan debugger, bangun target lunch agar indeks simbol out/target/product/<device>/symbols/.build-id lokal ada, dan flash atau luncurkan image perangkat yang cocok.

Java dan pen-debugan Java dan native ganda

Untuk men-debug aplikasi Java atau Kotlin, aplikasi sistem (seperti com.android.messaging, Setelan, atau SystemUI), atau proses yang memanggil JNI dan kode C++ atau Rust, selesaikan langkah-langkah berikut:

  1. Tetapkan titik henti sementara dalam file sumber Java, Kotlin, C, C++, atau Rust.
  2. Pilih Run > Attach to Android Process (Control+Alt+A). ASfP akan membuka tab Lampirkan yang disematkan di dalam jendela alat Debug.
  3. Pilih perangkat target Anda dari menu drop-down perangkat. Jika JDWP tidak diaktifkan pada build userdebug, klik Enable JDWP—ASfP akan menetapkan persist.debug.dalvik.vm.jdwp.enabled=1 dan memulai ulang perangkat. Jika aktif, tombol akan menampilkan JDWP diaktifkan dengan tindakan klik kanan Nonaktifkan JDWP.
  4. Pilih proses target dari tabel (proses Java dan ART menampilkan ikon cangkir kopi).
  5. Di bagian bawah tab Lampirkan, pilih Java debugger, Native debugger, atau keduanya. Memilih keduanya akan membuka dua tab yang ditautkan di jendela alat Debug: <process> (<pid>) untuk LLDB bawaan dan <process> (<pid>)-jdwp untuk Java. Siklus prosesnya terikat bersama, sehingga menghentikan salah satu sesi akan menghentikan keduanya.
  6. Klik Lampirkan dan berinteraksi dengan aplikasi di perangkat Anda untuk mencapai titik henti sementara.

Tab debug Java dan native ganda yang ditautkan bersama tab Lampirkan

Proses sistem (C dan C++) untuk proses debug dan verifikasi simbol

Untuk men-debug daemon sistem, HAL, atau layanan sistem (seperti android.hardware.bluetooth-service.cuttlefish, surfaceflinger, atau audioserver), selesaikan langkah-langkah berikut:

  1. Buka Run > Attach to Android Process (Control+Alt+A). Jika toolbar menampilkan Root Device, klik opsi tersebut agar ASfP menjalankan adb root dan menampilkan Device is rooted.
  2. Pilih Tampilkan proses sistem di toolbar atas dan filter untuk proses target Anda.
  3. Verifikasi simbol debug lokal di panel Libraries: Memilih proses akan mengisi tabel Libraries dengan setiap pustaka bersama ELF (.so) yang dimuat dalam proses dan delapan karakter heksadesimal pertama dari ID Build ELF-nya. ASfP mencocokkan setiap ID Build dengan out/target/product/<device>/symbols (symbols/.build-id diperlukan untuk menyelesaikan library di dalam APEX):
    • Library terverifikasi menampilkan ikon tanda centang. Arahkan kursor ke baris yang telah di-resolve untuk melihat pratinjau jalur simbol .debug lokal lengkapnya.
    • Library yang belum diselesaikan tanpa simbol lokal yang cocok akan menampilkan ikon peringatan.
  4. Deteksi proses non-Java: Saat Anda memilih proses C++ atau Rust (ditandai dengan ikon segi enam C), ASfP menyembunyikan debugger Java dan menampilkan Java debugging unavailable, not a Java process. sambil tetap mencentang Native debugger.
  5. Tetapkan titik henti sementara dalam file sumber C, C++, atau Rust, klik Lampirkan, dan picu jalur kode di perangkat.

Tab Lampiran yang menampilkan tabel Library, ID Build ELF, dan tanda centang simbol lokal

Men-debug kode Rust

ASfP men-debug kode platform Rust dengan debugger LLDB bawaan yang sama yang digunakan untuk C dan C++. Tidak diperlukan penyiapan server manual atau adaptor eksternal: ASfP menggunakan lldb-dap dari toolchain yang dibundel dan otomatis memuat pretty printer Rust dari prebuilt AOSP Anda sehingga jenis standar seperti String, Vec, HashMap, dan Option menampilkan nilai terstruktur di panel Variables.

Menghubungkan ke proses Rust yang sedang berjalan di perangkat

Ikuti langkah-langkah di Pen-debug-an proses sistem (C dan C++): buka Run > Attach to Android Process, verifikasi Device is rooted dan simbol lokal menampilkan tanda centang di panel Libraries, biarkan Native debugger dicentang, lalu klik Attach. Frame stack Rust dan C atau C++ muncul bersama dalam sesi debug yang sama.

Men-debug modul rust_test atau rust_test_host

  1. Buka file Android.bp yang mendeklarasikan target rust_test atau rust_test_host dan klik ikon Run di gutter di samping jenis modul.
  2. Pilih Debug '<ModuleName>'. ASfP akan membangun target, meluncurkan biner pengujian di bawah LLDB di mesin host atau perangkat terhubung, dan berhenti di titik henti sementara Rust Anda.
  3. Untuk men-debug satu fungsi pengujian atau menyesuaikan perintah startup LLDB, buka Run > Edit Configurations, pilih konfigurasi Soong Test yang dihasilkan, lalu tetapkan Method atau luaskan opsi Debugger. Untuk mengetahui informasi selengkapnya tentang opsi konfigurasi Soong Test, lihat Menguji kode platform dengan atest.

Men-debug kode platform Rust dengan visualisasi variabel terstruktur di ASfP