Android: Logcat melewatkan beberapa log?
Saya menggunakan Logcat untuk men-debug aplikasi saya yang menggunakan OpenGL. Loop onDraw OpenGL saya dimasukkan 30 hingga 60 kali per detik. Saya menempatkan 'banyak' Log.d (sekitar 30) di loop ini untuk men-debug aplikasi saya (yaitu untuk melihat bagian mana dari kode yang terlalu memakan waktu).
Masalah saya adalah saya melihat bahwa saya tidak memiliki semua Log.d saya di LogCat. Mereka diabaikan secara acak di setiap frame.
Masalah ini sepertinya sudah diketahui, misalnya di sini .
Apakah ada solusi untuk menghindari masalah ini? Ada alat log lainnya? Adakah pengaturan yang perlu diubah di Android studio? Ada solusi?
Terima kasih!
Jawaban
Ada kerangka kerja logger ringan yang dapat Anda gunakan yang juga mampu masuk ke file.
Saya akan merekomendasikan melakukan login ke file atau mengurangi logging Anda. Anda bilang Anda log sekitar 30 kali untuk satu frame. Melakukan itu hingga 60 kali dalam satu detik berarti 1800 log per detik. Jadi setiap setengah milidetik Anda mencatat sesuatu.
Selain fakta bahwa Anda meluapkan buffer logcat dengan cara ini dalam beberapa detik, itu tidak akan membantu Anda.
Saya akan merekomendasikan untuk menentukan awal dan titik akhir untuk pengukuran waktu Anda dan memodifikasinya untuk menemukan bagian yang terlalu memakan waktu. Juga hanya mencatat waktu yang diukur, jangan mengandalkan stempel waktu dari log di logcat. Jadi jangan mencatat stempel waktu "mulai" dan "hentikan", hanya durasi sebenarnya.
Saya juga berasumsi bahwa Anda memanggil beberapa fungsi atau melakukan beberapa loop di onDraw (). Ini adalah tempat yang baik untuk memulai pengukuran terpisah. Juga pertimbangkan bahwa logging itu sendiri mungkin berpengaruh pada performa, jadi terlalu banyak melakukan logging ke onDraw () kemungkinan akan memberikan hasil yang salah.
edit
Ada juga jawaban ini yang mungkin bisa membantu Anda juga: https://stackoverflow.com/a/35553778/180538
edit2
"Tautan" Anda tentang masalah ini berusia 11 tahun. Kemungkinan besar "masalah" ini sudah diperbaiki. Saya ingat bahwa saya pernah menulis file logger sendiri dan tidak pernah mengalami masalah ini dan saya mencatat 10.000 baris dalam satu baris untuk loop ...
Di Android Studio, Anda bisa memfilter keluaran logcat. Cukup klik kanan baris di logcat dan pilih "Filter serupa". Kemudian sesuaikan aturan pemfilteran Anda.
Maaf, saya sedang telepon, jadi tidak yakin nama persisnya, tapi pasti ada. Saya sering menggunakannya.
Memecahkan masalah saya. Sebenarnya, masalahnya adalah karena saya memiliki banyak log lain yang dibuat di bagian lain aplikasi saya. Saya tidak melihatnya karena saya memiliki filter di LogCat. Menghapus filter memungkinkan saya untuk melihat semua log saya, saya melihat bahwa saya memiliki banyak log yang berasal dari utas lain; Saya mengomentari log lainnya ini. Memecahkan masalah saya :) Terima kasih atas bantuan Anda!