Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menggunakan Debugger

Detail halaman ini menggunakan LLDB atau GDB untuk pengembangan OS. Untuk pengembangan aplikasi, lihat Men- debug aplikasi Anda , yang menjelaskan cara menggunakan GUI Android Studio (berdasarkan LLDB).

GDB tidak digunakan lagi dan akan segera dihapus. Jika Anda beralih dari GDB ke LLDB, Anda mungkin harus mulai dengan membaca Tutorial LLDB . Jika Anda adalah pengguna GDB ahli, peta perintah GDB ke LLDB sangat membantu saat melakukan transisi.

Prasyarat

Untuk menggunakan debugger:

  • Siapkan lingkungan build dengan perintah envsetup.sh biasa.
  • Jalankan perintah lunch sama dengan yang Anda gunakan saat membangun.

Untuk bantuan lebih lanjut tentang pengaturan lingkungan Anda, lihat Mengatur lingkungan .

Debugging aplikasi atau proses yang berjalan

Untuk menghubungkan ke aplikasi yang berjalan atau daemon asli, gunakan gdbclient.py dengan PID. Misalnya, untuk men-debug proses dengan PID 1234, jalankan:

gdbclient.py -p 1234

Skrip menyiapkan penerusan port, memulai stub debug jarak jauh yang sesuai pada perangkat, memulai debugger pada host, mengonfigurasinya untuk menemukan simbol, dan menghubungkannya ke stub debugging jarak jauh.

Debugging proses startup asli

Untuk men-debug proses saat dimulai, gunakan gdbclient.py dengan opsi -r :

gdbclient.py -r /system/bin/MY_TEST_APP

Kemudian, masukkan continue pada prompt debugger.

Debugging aplikasi startup

Terkadang Anda ingin men-debug aplikasi saat dimulai, seperti saat terjadi error dan Anda ingin menelusuri kode untuk melihat apa yang terjadi sebelum error tersebut. Melampirkan berfungsi dalam beberapa kasus, tetapi dalam kasus lain tidak mungkin karena aplikasi macet sebelum Anda dapat melampirkan. Pendekatan logwrapper (digunakan untuk strace ) tidak selalu berfungsi karena aplikasi mungkin tidak memiliki izin untuk membuka port, dan gdbserver mewarisi batasan itu.

Untuk men-debug startup aplikasi, gunakan opsi developer di Settings untuk menginstruksikan aplikasi menunggu debugger Java dipasang:

  1. Buka Pengaturan> Opsi pengembang> Pilih aplikasi debug dan pilih aplikasi Anda dari daftar, lalu klik Tunggu debugger .
  2. Mulai aplikasi, baik dari peluncur atau dengan menggunakan baris perintah untuk menjalankan:
    adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
    
  3. Tunggu aplikasi dimuat dan dialog muncul yang memberi tahu Anda bahwa aplikasi sedang menunggu debugger.
  4. Lampirkan gdbserver / gdbclient normal, setel breakpoint, lalu lanjutkan prosesnya.

Agar aplikasi dapat berjalan, lampirkan debugger Java Debug Wire Protocol (JDWP) seperti Java Debugger (jdb):

adb forward tcp:12345 jdwp:XXX  # (Where XXX is the PID
of the debugged process.)
jdb -attach localhost:12345

Men-debug aplikasi atau proses yang mogok

Jika Anda ingin debuggerd menangguhkan proses yang rusak sehingga Anda dapat memasang debugger, setel properti yang sesuai:

  • Setelah Android 11
    adb shell setprop debug.debuggerd.wait_for_debugger true
    
  • Android 11 dan lebih rendah
    adb shell setprop debug.debuggerd.wait_for_gdb true
    
  • Android 6.0 Marshmallow dan
    adb shell setprop debug.db.uid 999999
    
    yang lebih rendah

Di akhir keluaran kerusakan biasa, debuggerd menyediakan instruksi salin dan tempel di logcat yang menunjukkan cara menghubungkan debugger ke proses yang mogok.

Debugging tanpa simbol

Untuk ARM 32-bit, jika Anda tidak memiliki simbol, gdb tidak dapat menentukan set instruksi mana yang dibongkar (ARM atau Thumb). Untuk menentukan set instruksi yang dipilih sebagai default ketika informasi simbol hilang, setel properti berikut ini:

set arm fallback-mode arm  # or thumb

Debugging dengan VS Code

LLDB mendukung kode platform debugging pada Visual Studio Code . Anda dapat menggunakan antarmuka debugger VS Code sebagai ganti antarmuka LLDB CLI untuk mengontrol dan men-debug kode native yang berjalan di perangkat.

Sebelum menggunakan VS Code untuk debugging, instal ekstensi CodeLLDB .

Untuk men-debug kode menggunakan VS Code:

  1. Pastikan semua artefak build (seperti simbol) yang diperlukan untuk menjalankan gdbclient.py atau lldbclient.py ada.
  2. Jalankan perintah berikut:
    lldbclient.py -p pid | -n proc-name |
    -r ... --setup-forwarding vscode ANY_OTHER_FLAGS

    Ini mencetak objek JSON dan lldbclient.py terus berjalan. Ini diharapkan; jangan mematikan program lldbclient.py .

  3. Di tab debugging di VS Code, pilih tambahkan konfigurasi , lalu pilih LLDB: Peluncuran Kustom . Ini membuka file launch.json dan menambahkan objek JSON baru ke daftar.
  4. Hapus konfigurasi debugger yang baru ditambahkan.
  5. Salin objek JSON yang dicetak oleh lldbclient.py dan tempelkan ke objek yang baru saja Anda hapus. Simpan perubahannya.
  6. Untuk memuat ulang jendela guna menyegarkan daftar debugger, tekan Ctrl + Shift + P dan ketik reload window .
  7. Pilih konfigurasi debugger baru dan tekan jalankan . Debugger akan terhubung setelah 10 hingga 30 detik.
  8. Ketika Anda selesai debugging, pergi ke terminal yang menjalankan lldbclient.py dan tekan Enter untuk mengakhiri program lldbclient.py .