Android ทำงานดีในการซ่อนรายละเอียดทางเทคนิคจากผู้ใช้ เมื่อสิ่ง gìผิดพลาด คุณไม่เห็นกำแพงข้อความเข้ารหัสที่น่ากลัว مثل Mac มันแค่... ผิดพลาด
แม้ดีสำหรับคนส่วนใหญ่ แต่น้อยช่วยเหลือนักพัฒนาที่อยากดูว่าทำไมแอปไม่ทำงาน และผู้ใช้ขั้นสูงที่อยากเข้ามือปฏิบัติ
นั่นคือเหตุผลที่ Logcat มีประโยชน์มาก มันให้คุณดึง System Logs ของโทรศัพท์/แท็บเล็ตเพื่อ Debug ปัญหา แม้ผู้ใช้ส่วนใหญ่ไม่มีประโยชน์ นักพัฒนาบางครั้งขอผู้ใช้ให้ Log Files เมื่อปัญหาเกิดขึ้น นี่คือวิธีติดตั้งและใช้ Logcat
การได้รับ Logcat
ก่อนเริ่มผลิต System Logs คุณต้องทำ Prerequisites ก่อน อันแรกคือติดตั้ง Android Debug Bridge (ADB) ซึ่งมี Logcat Tool
ถ้าคุณบน Mac เหมือนผม วิธีง่ายคือใช้ HomeBrew Package Manager ติดตั้งแล้ว รัน "brew install android-platform-tools"
ถ้าบน Linux ขั้นตอนติดตั้ง ADB แตกต่างมากระหว่าง Distro ถ้า Ubuntu รัน "sudo apt-get install android-tools-adb"
สุดท้ายถ้าบน Windows มี 2 ทางเลือก แรก XDADevelopers มี One-click ADB Installer รวม Drivers และ FastBoot หรือติดตั้งผ่าน Chocolatey Package Manager แตเวอร์ชันอาจไม่ใช่ล่าสุด
ตั้งอุปกรณ์เป็น Developer Mode
ต่อไป เปิด Developer Mode บนอุปกรณ์ ไปที่ Settings > "About Phone" หรือ "About Tablet" เลื่อนลงล่างสุด แตะ "Build Number" 7 ครั้ง จะบอกว่าคุณเข้าสู่ Developer Mode
กด Back ไปที่ Root Directory ของ Settings ควรเห็น "Developer Options" แตะเข้าไป
เปิด USB Debugging และเสียบ Android เข้าคอมพิวเตอร์ ถ้าทุกอย่างถูกต้อง ควรเห็น Popup คำเตือนรุนแรงบนอุปกรณ์
ดู Logs
ตอนนี้เริ่มดู Logs เปิด Terminal/Command Prompt ใหม่ รัน "adb logcat" ควรเห็น System Messages ไหลลงมาบนหน้าต่าง Terminal ถ้าไม่เห็น แสดงว่าผิดพลาด: อุปกรณ์ไม่ได้เชื่อม ADB ติดตั้งผิด หรือ USB Debugging ไม่ได้เปิด
ถ้าอยาก Copy System Messages ไปไฟล์ Text เพื่อวิเคราะห์ภายหลัง Syntax การ Redirect Output เหมือนกัน Windows และ Mac รัน "adb logcat > textfile.txt" หรือรัน "adb logcat -f filename"
ได้ Log File แล้ว Parse ด้วย Sed, Awk, Grep หรือส่งให้ผู้พัฒนาที่ขอ
Logcat จะรันนานเท่าที่คุณสั่ง ถ้า Copy Output ไปไฟล์และลืมปิดการเชื่อมต่อ อย่าประหลาดถ้า Hard Drive เต็ม ปิดด้วย CTRL-C
DevOps/System Admin จะบอกว่า Log Files ใหญ่ได้ถึง สิบๆ GB และมากกว่า คุณถูกเตือนแล้ว
หมายเหตุเกี่ยวกับการกรอง Output
คุณสั่ง Logcat ให้ Priority Output บางประเภท รัน Logcat ด้วย Flag "V" ("adb logcat V") จะเห็นทุกอย่าง เพราะเปิด "Verbose Mode"
แต่มี Trigger อื่นสำหรับ Error Messages เฉพาะ "I" แสดง Info เท่านั้น "D" แสดง Debug Messages ดูรายละเอียดใน Android Debug Bridge Documentation
แม้จะแนะนำว่า ถ้าไม่ได้รับคำสั่งอื่น ให้รัน Logcat ด้วย Default Settings เพื่อให้ผู้ขอ Log ได้ข้อมูลครบและไม่พลาดอะไร
มีโซลูชันสำหรับอุปกรณ์ที่รูทแล้วไหม?
มีจริง! ถ้ามีโทรศัพท์/แท็บเล็ตที่รูท ติดตั้ง "aLogCat" จาก Play Store มี Free และ Paid ทั้งคู่เหมือนกัน แต Paid สนับสนุนนักพัฒนา
aLogCat แตกต่างตรงที่รันบนอุปกรณ์โดยตรง และมีฟีเจอร์ทำให้จัดการ Error Logs ง่ายขึ้น
ข้อความมี Highlight ให้เห็นภาพว่าอันไหน Error อันไหน System Notification ปกติ แชร์ได้ผ่าน Email, Bluetooth, และ PasteBin ผ่าน PasteDroid
ถ้าอยากบันทึก Logs ต่อเนื่องไป SD Card ต้องโหลด aLogRec อีกตัว มี Free และ Donate Version ได้จาก Play Store
แต่อยาก View และ Edit Log Files โดยตรง บนโทรศัพท์? แนะนำ Vim Touch เวอร์ชัน Mobile ฟรีของ VIM Text Editor ผมเคยเขียนเรื่องนี้เมื่อสักปีก่อน เกี่ยวกับการตั้งค่า PHP Dev Environment บน Android
ก่อนจบ อยากเน้นว่าการรูทอาจทำให้โทรศัพท์เปราะบางต่อ Malware และแอปบางอย่าง (โดยเฉพาะ Banking) ไม่ทำงาน
ถ้าคุณคิดจะรูทแค่เพื่อ Log files ผม แนะนำอย่างยิ่ง ให้ใช้ ADB แบบ Tethered แทน เหมือนกันง่าย และ ปลอดภัยกว่ามาก
Over To You!
เคยต้องดึง System Log ของโทรศัพท์/แท็บเล็ตมั้ย? ทำไม? ง่ายไหม? ใช้วิธีไหน? บอกมาในความคิดเห็นได้เลย