Jika Anda ingin informasi waras, saya sarankan perintah waras :) (jangan tersinggung berarti, hanya bercanda). Jadi pertanyaannya harus dibaca:
Bagaimana cara mendapatkan informasi log dari perangkat Android?
Dan sekarang kita berada di sisi yang lebih baik. Ada beberapa pendekatan yang dapat digunakan:
- memanfaatkan aplikasi untuk menampilkan informasi log (kode warna)
- menggunakan ADB (bagian dari Android SDK) untuk mengekstrak informasi yang sama
- gunakan ssh dari jarak jauh (atau aplikasi terminal lokal) untuk memperoleh informasi langsung dari perangkat
Untuk sepenuhnya menangani topik ini dibutuhkan lebih dari jawaban sederhana ini (jika tertarik, Anda dapat mis. Menemukan informasi lebih rinci di banyak situs web, atau dalam buku Andrew Hoog Android Forensics: Investigasi, Analisis dan Keamanan Seluler untuk Google Android , yang saya punyai kehormatan untuk menerjemahkan ke dalam bahasa Jerman. Mungkin ada banyak sumber lain juga.
Jadi saya hanya akan memberikan beberapa contoh di sini untuk membantu Anda memulai:
Memanfaatkan aplikasi
Aplikasi yang mungkin paling dikenal dalam konteks ini adalah aLogcat , tersedia secara gratis di playstore (dan dev akan dengan senang hati menerima donasi Anda untuk varian lain dari aplikasi yang sama). Anda akan menemukan tangkapan layar di bawah 1 . Aplikasi ini memungkinkan Anda untuk menyaring log, untuk memulai / menghentikan rekaman pesan log, dan bahkan untuk menyimpan potongan rekaman ke SD-Card Anda - tentu saja dalam teks biasa, seperti yang Anda minta.
Aplikasi lain di bagian ini adalah Log Collector , yang hanya mencoba mengambil seluruh log yang tersedia dan mengirimkannya melalui menu share 2 .
Jembatan Debug Android (ADB)
Kit Pengembangan Perangkat Lunak Android (SDK) mencakup adb
perintah untuk berbagai tugas. Di antara banyak lainnya, ia menawarkan adb shell
untuk mengeksekusi perintah pada perangkat. Dengan menggunakan ini, Anda dapat mengumpulkan informasi log yang Anda inginkan juga: Awali saja perintah di bawah ini dengan adb shell
.
Command prompt pada perangkat
Dengan menggunakan aplikasi terminal (mis. Android Terminal Emulator atau Terminal IDE ) Anda dapat mengakses log secara langsung di command prompt, secara lokal di perangkat Anda. Sedikit lebih nyaman, ini dapat dilakukan dengan menjalankan server ssh (mis. DroidSSHd atau DropBear SSH Server ) pada perangkat Anda, dan mengaksesnya dari komputer Anda. Dengan cara ini Anda dapat bekerja di layar lebar, sambil menyelidiki log Anda.
Perintah untuk mengakses informasi log Anda
Ada banyak perintah kuat yang dapat Anda gunakan untuk mengakses informasi log Anda dari baris perintah, dan saya hanya akan memberikan beberapa contoh di sini.
dmesg
The dmesg
perintah ekstrak log kernel:
$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<7>[82839.242279] PM: Entering mem sleep
<4>[82839.242889] Suspending console(s) (use no_console_suspend to debug)
<7>[82839.252410] vfp_pm_save_context: saving vfp state
<6>[82839.252716] PM: Resume timer in 26 secs (864747 ticks at 32768 ticks/sec.)
<6>[82842.091369] Successfully put all powerdomains to target state
<6>[82842.092468] wakeup wake lock: wifi_wake
logcat
Dengan logcat
, Anda dapat mengakses banyak informasi logging - tetapi seringkali, ini membutuhkan root. Ini memiliki beberapa parameter untuk menyaring informasi, misalnya dengan memilih buffer log untuk dibaca -b
. Silakan baca informasi yang disediakan pada halaman pengembang di logcat untuk detailnya. Untuk memberi Anda dua contoh: logcat -b events
akan mendaftar acara, atau logcat -b radio
informasi tentang modul radio perangkat Anda.
dumpsys dan dumpstate
Dua perintah dumpsys
dan dumpstate
memberi Anda informasi sistem terperinci:
$ dumpsys
Currently running services:
LocationProxyService
SurfaceFlinger
accessibility
account
activity
<snip>
DUMP OF SERVICE account:
Accounts: 1
Account {[email protected], type=com.google}
<snip>
DUMP OF SERVICE alarm:
$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================
Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB
Buffers: 14136 kB
Cached: 145460 kB
<snip>
laporan bug
Dan jika Anda terlalu malas untuk mengingat semuanya, cukup gunakan bugreport
perintah - yang memanggil semua di atas dan membundelnya untuk laporan bug yang bagus, humm, kepada pengembang ...
Tentu saja, Anda dapat mengalihkan output dari semua perintah itu ke file untuk disalin ke komputer Anda, dan dalam kebanyakan kasus Anda harus melakukannya - karena buffer layar Anda terlalu kecil untuk menangani semuanya: bugreport > /mnt/sdcard/bugreport.txt
akan menjadi salah satu contoh untuk bagian itu.
$ dmesg
ataudmsg
? Pasti ada salah ketik di salah satu dari ini :)adb shell pm grant com.nolanlawson.logcat android.permission.READ_LOGS
Untuk pengembang (atau pihak lain yang berkepentingan) yang perlu mem-parsing file mentah ini, berikut adalah beberapa sumber:
android_logger_list_read()
untuk mengumpulkan entri log: https://android.googlesource.com/platform/system/core/+/master/logcat/logcat.cppFormat aktual format log ditetapkan pada:
Salinan bagian-bagian yang relevan, sedikit beranotasi dan dipesan ulang untuk kenyamanan Anda:
Anda dapat membedakan perbedaan versi dengan melihat byte ketiga dan keempat. Formatnya rupanya juga tergantung pada endianness platform Anda. Untuk pesan v1,
__pad
sama dengan0
. pesan v2 (dan v3) menggunakan 24 (0x18
).Untuk
main
,radio
dan bidangsystem
logmsg
ditafsirkan sebagai berikut ( sumber ):\0
sebagai pemisah\0
sebagai terminatorJika pesan ini terpotong, jejaknya
\0
mungkin tidak ada.events
Namun untuk log,msg
bidang berisi data biner berikut:length
, diikuti olehlength
byte yang berisi string yang dikodekan UTF8length
, diikuti olehlength
simpul pohon masing-masingAndroidEventLogType
.sumber