NDK menyertakan skrip shell bernama ndk-gdb
untuk memulai
sesi proses debug native command line (sebelumnya gdb, tetapi sekarang lldb).
Pengguna yang lebih suka menggunakan GUI sebaiknya membaca dokumentasi untuk melakukan proses debug di Android Studio.
Persyaratan
Agar proses debug native command line dapat berjalan, persyaratan berikut harus terpenuhi:
- Build aplikasi Anda menggunakan skrip
ndk-build
. Skripndk-gdb
tidak mendukung penggunaan metodemake APP=<name>
lama untuk proses build. - Aktifkan proses debug aplikasi dalam file
AndroidManifest.xml
dengan menyertakan elemen<application>
yang menetapkan atributandroid:debuggable
ketrue
. - Build aplikasi Anda agar berjalan di Android 2.2 (Android API level 8) atau yang lebih tinggi.
- Debug pada perangkat atau emulator yang menjalankan Android 2.2 atau yang lebih tinggi.
Untuk tujuan proses debug, API level target
yang dideklarasikan dalam file
AndroidManifest.xml
tidak penting. - Kembangkan aplikasi di shell Unix. Di Windows, gunakan Cygwin atau implementasi Python
ndk-gdb-py
eksperimental. - Gunakan GNU Make 3.81 atau yang lebih tinggi.
Penggunaan
Untuk memanggil skrip ndk-gdb
, ubah ke direktori aplikasi atau direktori apa pun di bawahnya. Contoh:
cd $PROJECT $NDK/ndk-gdb
Di sini, $PROJECT
mengarah ke direktori utama project, dan $NDK
mengarah ke jalur penginstalan NDK.
Saat Anda memanggil ndk-gdb
, kode tersebut akan mengonfigurasi sesi untuk mencari file sumber dan versi simbol/debug library native yang telah Anda hasilkan. Setelah berhasil melampirkannya ke proses aplikasi Anda, ndk-gdb
akan mengeluarkan rangkaian panjang pesan error, yang menyampaikan bahwa kode tidak dapat menemukan berbagai library sistem. Hal ini normal, karena mesin host Anda tidak memuat versi simbol/debug library ini pada perangkat target. Anda dapat mengabaikan pesan ini dengan aman.
Selanjutnya, ndk-gdb
akan menampilkan perintah lldb biasa.
Anda berinteraksi dengan ndk-gdb
dengan cara yang sama seperti saat berinteraksi dengan lldb.
Lihat [peta perintah GDB ke LLDB](https://lldb.llvm.org/use/map.html) yang berguna jika
Anda tidak terbiasa dengan lldb, tetapi mengetahui gdb.
ndk-gdb
menangani banyak kondisi error, dan akan menampilkan pesan error informatif saat menemukan masalah. Pemeriksaan ini mencakup proses untuk memastikan kondisi berikut terpenuhi:
- Memeriksa apakah ADB berada di jalur Anda.
- Memeriksa apakah aplikasi Anda dinyatakan dapat di-debug dalam manifesnya.
- Memeriksa bahwa, aplikasi yang diinstal di perangkat dengan nama paket yang sama juga dapat di-debug.
Secara default, ndk-gdb
akan menelusuri proses aplikasi yang sudah berjalan, dan menampilkan
error jika tidak menemukannya. Namun, Anda dapat menggunakan opsi --start
atau --launch=<name>
untuk memulai aktivitas secara otomatis sebelum sesi proses debug. Untuk informasi selengkapnya, lihat Opsi.
Opsi
Untuk melihat daftar lengkap opsi yang tersedia, ketik ndk-gdb --help
pada command line. Tabel 1 menunjukkan sejumlah opsi yang lebih umum digunakan, beserta deskripsi singkat.
Tabel 1. Opsi ndk-gdb umum dan deskripsinya.
Memulai ndk-gdb
dengan opsi yang ditentukan ini akan meluncurkan aktivitas pertama yang dapat diluncurkan, yang tercantum dalam manifes aplikasi Anda. Gunakan --launch=<name>
untuk memulai aktivitas berikutnya yang dapat diluncurkan. Untuk menghapus daftar aktivitas yang dapat diluncurkan, jalankan --launch-list
dari command line.
Opsi | Deskripsi |
---|---|
--verbose |
Opsi ini memberi tahu sistem build untuk menampilkan informasi panjang tentang penyiapan sesi proses debug native. Opsi ini hanya diperlukan untuk masalah proses debug ketika debugger tidak dapat terhubung ke aplikasi, dan pesan error yang ditampilkan |
--force |
Secara default, ndk-gdb akan dibatalkan jika ada sesi proses debug native lain yang sudah berjalan di perangkat yang sama. Opsi ini akan menghentikan sesi lain tersebut, dan menggantinya dengan sesi baru.
Perhatikan bahwa opsi ini tidak menghentikan aplikasi sebenarnya yang sedang di-debug, yang harus Anda hentikan secara terpisah. |
--start |
Ketika dimulai, |
--launch=<name> |
Opsi ini mirip dengan |
--launch-list |
Opsi yang membantu ini menampilkan daftar semua nama aktivitas yang dapat diluncurkan yang ada dalam manifes aplikasi. |
--project=<path> |
Opsi ini menetapkan direktori project aplikasi. Opsi ini dapat membantu jika Anda ingin meluncurkan skrip tanpa perlu berganti ke direktori project terlebih dahulu. |
--port=<port> |
Secara default, |
--adb=<file> |
Opsi ini menentukan file alat adb yang dapat dieksekusi. Hanya diperlukan jika Anda belum menetapkan jalur untuk menyertakan file yang dapat dieksekusi tersebut. |
-d -e -s <serial> |
Flag ini serupa dengan perintah adb dengan nama yang sama. Tetapkan flag ini jika Anda memiliki beberapa perangkat atau emulator yang terhubung ke mesin host. Arti flag ini adalah seperti berikut:
Atau, Anda dapat menentukan variabel lingkungan |
--exec=<file> -x <file> |
Opsi ini memberi tahu |
--nowait |
Menonaktifkan jeda kode Java hingga debugger terhubung. Melewatkan opsi ini dapat menyebabkan debugger kehilangan titik henti sementara terlalu dini. |
--tui
-t |
Mengaktifkan Antarmuka Pengguna Teks jika tersedia. |
--gnumake-flag=<flag> |
Opsi ini merupakan flag (atau beberapa flag) tambahan untuk diteruskan ke sistem |
Catatan: Ketiga opsi terakhir dalam tabel ini hanya untuk
ndk-gdb
versi Python.