Android Studio untuk Platform (ASfP) menyediakan debugger canggih yang memungkinkan Anda:
- Pilih perangkat untuk men-debug.
- Menetapkan titik henti sementara dalam kode Java, Kotlin, C/C++, dan Rust.
- Memeriksa variabel dan mengevaluasi ekspresi pada waktu proses.
Sebelum menggunakan debugger, Anda harus mem-flash build ke perangkat atau emulator.
Proses aplikasi (Java/Kotlin) debugging
Untuk men-debug proses aplikasi Java atau Kotlin:
Menetapkan titik henti sementara dalam kode Java atau Kotlin di dalam ASfP.
Pilih Run > Attach Debugger to Android Process dari menu.
Pada dialog Choose Process, pastikan Debug type disetel ke Java Only.
Pilih perangkat Anda dari daftar.
Pilih proses aplikasi tertentu yang ingin Anda debug.
Klik OK.
Berinteraksi dengan aplikasi di perangkat Anda untuk mencapai titik henti.
Proses sistem (C/C++) debugging
Untuk men-debug proses sistem yang ditulis dalam C atau C++:
Pastikan Anda hanya menjalankan satu perangkat atau emulator.
Buka terminal dan jalankan
adb rootdari root checkout AOSP Anda:bash adb root
Tetapkan titik henti sementara dalam kode C/C++ Anda di dalam ASfP.
Pilih Run > Attach Debugger to Android Process dari menu.
Pada dialog Choose Process, ubah Debug type menjadi Native Only atau Dual (Java + Native).
Centang kotak Tampilkan semua proses untuk melihat proses sistem.
Pilih perangkat Anda dari daftar.
Pilih proses sistem tertentu yang ingin Anda debug (seperti
surfaceflingeratausystem_server).Klik OK.
Berinteraksi dengan perangkat untuk mencapai titik henti sementara.
Proses debug Rust
ASfP mendukung proses debug Rust menggunakan Debug Adapter Protocol (DAP) dengan LLDB. Bagian ini menguraikan cara menyiapkan CodeLLDB sebagai Server Adaptor Debug dan men-debug kode Rust di host dan di perangkat Android.
Menyiapkan CodeLLDB sebagai Server Adaptor Debug
Membuat konfigurasi Run/Debug Debug Adapter Protocol baru:
- Pilih Run > Edit Configurations dari menu.
- Klik tombol +.
- Pilih Debug Adapter Protocol.
Di tab server, klik create a new server.
Pada dialog yang baru dibuka, klik Choose template, lalu pilih CodeLLDB dari daftar.
Setelah memilih template CodeLLDB, server baru akan ditambahkan dengan konfigurasi yang telah ditentukan sebelumnya.
- Aktifkan pelacakan verbose dengan memilih Verbose di dropdown Trace.
- Tambahkan variabel lingkungan yang menentukan jalur ke
lldb-serverdi prebuilt sumber Android Anda:
LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server ``` Replace `REPO_ROOT` with the absolute path to your Android source checkout. To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of your Android source tree: ```bash ./build/soong/scripts/get_clang_version.py- Jangan mengubah bagian
<<insert base directory>>.
Men-debug biner Rust di host
- Buka tab Configuration di konfigurasi Run/Debug Debug Adapter Protocol Anda.
- Pilih Luncurkan sebagai Mode Debug.
- Perbarui Working directory dan pilih Binary file yang ingin Anda debug.
- Klik OK untuk menyimpan konfigurasi.
- Mulai sesi proses debug dengan mengklik ikon Debug di samping konfigurasi.
Saat pertama kali Anda menjalankannya, CodeLLDB akan didownload. Anda akan melihat rekaman aktivitas DAP di konsol. Titik henti sementara yang ditetapkan dalam kode Rust Anda akan tercapai seperti yang diharapkan.
Men-debug biner Rust di perangkat Android (Mode lampirkan)
Temukan PID: Identifikasi ID Proses (PID) aplikasi yang ingin Anda debug di perangkat Android.
Mulai lldb-server di perangkat: Dari checkout hierarki sumber Android Anda, jalankan skrip
lldbclient.py, ganti<PID>dengan ID proses:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Skrip ini mengirimkan
lldb-serveryang benar ke perangkat, memulainya, menyiapkan penerusan port (port host 5039 ke perangkat), dan menghasilkan konfigurasi JSON DAP yang diperlukan untuk langkah berikutnya. Biarkan terminal ini tetap terbuka.Mulai Adaptor Debug CodeLLDB di host:
- Buka direktori ekstensi CodeLLDB (default:
~/.lsp4ij/dap/codelldb/extension/adapter). - Tetapkan variabel lingkungan yang diperlukan dan mulai server adapter, dengan mengganti
REPO_ROOTdanCLANG_VERSIONsebagaimana ditentukan dalam penyiapan server:
# Sets PYTHONHOME env variable export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3 # Tell the dynamic linker where to find python libs export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib # Starts the CodeLLDB Debugger Adapter server on port 1234 ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234- Buka direktori ekstensi CodeLLDB (default:
Konfigurasi Klien DAP ASfP:
- Kembali ke konfigurasi Run/Debug Debug Adapter Protocol di ASfP.
- Pilih tab Configuration.
- Setel Debug Mode ke Attach.
- Tetapkan Alamat ke
localhost. - Tetapkan Port ke
1234. - Tempelkan output JSON dari perintah
lldbclient.py(Langkah 2) ke kolom Parameter DAP (JSON).
Klik Debug untuk memulai sesi proses debug.
Pemecahan masalah
- Jika Anda melihat error
error: Connection shut down by remote side while waiting for reply to initial handshake packet, akhiri sesi debug saat ini, lalu mulai ulanglldb-serverdi perangkat dan adaptor CodeLLDB di host.