ฉันจะดูและตรวจสอบบันทึก Android ได้อย่างไร


109

มีสิ่งที่น่าสนใจมากมายในบันทึกระบบ Android ที่มีประโยชน์ในหลาย ๆ ด้าน

  • ค้นหาสาเหตุของปัญหา
  • ระบุแอปที่ทำงานผิดปกติ

ฉันจะดูและตรวจสอบบันทึก Android ได้อย่างไร


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Matthew อ่าน

คำตอบ:


59

Android 4.1 และใหม่กว่า

วิธีที่ต้องการคือการดาวน์โหลดSDKและการใช้งานadb logcat(ต้องเปิดใช้งาน "ตัวเลือกนักพัฒนา" บนอุปกรณ์)

มีแอพที่พร้อมใช้งานสำหรับการดูบันทึกของระบบแบบเต็มอย่างไรก็ตามพวกมันจะทำงานเฉพาะกับอุปกรณ์ที่รูทหรือต้องการออกคำสั่งด้วยตนเองผ่านadbเพื่อให้ทำงานได้ สำหรับข้อมูลเพิ่มเติมดูคำถามนี้

Android 4.0 ขึ้นไป

คุณสามารถดาวน์โหลดSDKและใช้adb logcatหรือรับLogcat Extremจาก Google Play Store ซึ่งจะแสดงบันทึกโดยตรงบนโทรศัพท์ของคุณ


2
หรือคุณสามารถใช้ Terminal Emulator พร้อมกับคำสั่ง "logcat> /sdcard/log.txt" สำหรับการเขียนบันทึกอย่างต่อเนื่องไปยังไฟล์บนการ์ด SD วิธีนี้จะช่วยให้ทราบปัญหาของการรีบูตแบบสุ่ม
Chahk

จุดดี. โทรศัพท์บางรุ่นมีแนวโน้มที่จะสแปมบันทึกที่เต็มไปด้วยข้อมูลเล็ก ๆ น้อย ๆ ดังนั้นหากคุณต้องการลดขนาดไฟล์และข้อมูลให้เหลือน้อยที่สุดให้ไปที่หัวข้อ "การกรองบันทึกผลลัพธ์" บนdeveloper.android.com/guide/developing/tools/adb.html #logcat
onik

LogCat แอปไม่สามารถใช้งานได้กับ JellyBean Google เปลี่ยน Android API แอพไม่ได้รับอนุญาตให้อ่านบันทึกจากแอพอื่นนอกเหนือจากแอปของตนเอง
Leandros

ฉันได้สร้างยูทิลิตี้ง่าย ๆ เพื่อรวบรวมบันทึกจากพีซี: gist.github.com/hrj/5983971
HRJ

Logcat Extreme เป็นแอพที่ดีสำหรับการดูบันทึก
Arpit Patel

57

ตำแหน่งไฟล์บันทึก

มีหลายไดเรกทอรีที่อาจมีบันทึก (รวมถึงที่เกิดจากข้อขัดข้อง) - บางรายการอาจไม่ได้มาตรฐาน (เช่นบางรายการอาจเป็นแบบเฉพาะ ROM)

  • /data/anr: ดูเหมือนว่าไฟล์การติดตามบางไฟล์มาที่นี่ (Dalvik เขียนการติดตามสแต็กที่นี่ใน ANR เช่น "แอปพลิเคชันไม่ตอบสนอง" aka "Force-Close"; ดูตัวอย่างเช่นข้อความที่ตัดตอนมาที่นี่ )
  • /data/dontpanicดูเหมือนว่าจะเป็นตำแหน่งมาตรฐาน (AOSP) และมีบันทึกข้อผิดพลาดบางอย่างรวมถึงการติดตาม (ดูเช่นviaForensicsและStackOverflow )
  • /data/kernelpanics เป็นอีกที่หนึ่ง - ไม่มี "kernel panic" บนอุปกรณ์ Android ของฉันฉันยังไม่เห็นเนื้อหาในนั้น
  • /data/panic/panic_daemon.configจุดพฤษภาคมถึงสถานที่อื่น ๆ การกำหนดค่า - เมื่อฉัน Droid 2 กล่าวถึง/sdcard/panic_data/
  • กล่าวถึง Droid 2 ยังมี/data/panicreportsไดเรกทอรี (ว่างที่นี่)
  • /data/tombstonesอาจมีหลายtombstone_nnไฟล์ (โดยnnเป็นอนุกรมเพิ่มขึ้นทุกไฟล์ใหม่) เนื่องจากหลุมฝังศพถูกวางไว้สำหรับคนตายจะทำที่นี่สำหรับ "กระบวนการที่เสียชีวิตจากอุบัติเหตุ" (เช่นเกิดการขัดข้อง) - และเป็นสิ่งที่เรียกว่า "แกนกลาง" บนระบบ Linux / Unix อย่างไรก็ตามแอพบางตัวนั้นไม่สามารถสร้างหลุมฝังศพได้ สิ่งนี้จะต้องเปิดใช้งานอย่างชัดเจนโดยผู้พัฒนา (ดูที่การดีบัก Android Core Dumps )

อาจมีสถานที่อีกหลายแห่งที่ทำให้ฉันรอด แต่เมื่อการบันทึกส่วนใหญ่เสร็จสิ้นtmpfsแล้วข้อมูลเหล่านี้จะหายไปพร้อมกับรีบูตและจะไม่ตรงกับคำถาม OPs

บันทึกคำสั่งเพื่อใช้กับแอปเทอร์มินัล (หรือ adb)

มีหลายคำสั่งที่ทำให้คุณได้รับข้อมูลมากมาย สำหรับพวกเขาส่วนใหญ่ขอแนะนำให้นำพวกเขาไปยังไฟล์ ( > filename.ext) อีกครั้งหรือไพพ์ผ่านตัวกรอง ( | grep search-for-this):

บันทึกเคอร์เนล

การทำงานต่อไปนี้โดยไม่มีรูต:

$ 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.
<snip>

logcat

ที่นี่คุณสามารถระบุพื้นที่ที่คุณสนใจได้ - วิทยุกิจกรรม ...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>

กำลังรับข้อมูลอุปกรณ์

และตันของมัน: เฉพาะอุปกรณ์ข้อมูลบัญชีบริการ ...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, type=com.google}
<snip> 

$ 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 
<snip>

ทั้งหมดในอย่างเดียว

ทำลูกบอลลูกใหญ่ด้วยทุกสิ่งร่วมกันจาก logcat ถึง dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

ฉันค่อนข้างมั่นใจว่าคุณต้องการเปลี่ยนเส้นทางคำสั่งสุดท้าย ... xD

บางอย่างเกี่ยวกับสิทธิ์

PS:โดยธรรมชาติการเข้าถึงข้อมูลเหล่านั้นอาจต้องการรูทเนื่องจากแหล่งข้อมูลส่วนใหญ่ตั้งอยู่บนที่เก็บข้อมูลภายใน


เพื่อให้ได้ข้อมูลเชิงลึกมากขึ้นบางลงในคำสั่ง adb logcat ดูที่นี่
ทดสอบ

หรือเพียงแค่ตรวจสอบแท็กการบันทึกของเรา-wiki @ การทดสอบ - ที่มีการอ้างอิงเพิ่มเติม :)
อิซซี่

ลิงก์สำหรับ "การดีบัก Android Core Dumps" ตายไปแล้วเราจะหาทางเลือกอื่นได้หรือไม่?
Spidey

1
@Spidey มีเสมอArchive.ORGสำหรับชนิดของปัญหานี้ (ลิงค์ไปสำเนาการทำงานที่นั่น)
อิซซี

12

พบว่าCatLogแสดงบันทึก Android ดีขึ้นเล็กน้อยแล้ว aLogcat นอกจากนี้adb logcatนั่นคือสิ่งที่ฉันใช้


ดูความคิดเห็นของฉันด้านบนเกี่ยวกับแอป LogCat
Leandros

2
ฉันได้อัปเดตคำถามแล้ว โปรดทราบว่าข้อมูลตำแหน่งสัมพัทธ์ (เช่น "ด้านบน") อาจล้าสมัยได้ง่ายเนื่องจากลำดับของคำตอบอาจเปลี่ยนแปลงได้ตามเวลา
Flow

3

วิธีที่ไม่มีรูทซึ่งทำงานได้กับ Android เวอร์ชันใหม่:

วิชาบังคับก่อน:

  • Linux, Windows หรือ Mac
  • สาย USB สำหรับอุปกรณ์ของคุณ
  • อุปกรณ์ Android

คำแนะนำ:

  1. ติดตั้งไดรเวอร์อุปกรณ์ของคุณเพื่อใช้ adb ทุกสิ่งที่คุณต้องการคุณจะพบได้ที่นี่
  2. ดาวน์โหลด adb executable สำหรับระบบปฏิบัติการของคุณ เป็นส่วนหนึ่งของ Android SDK แต่คุณอาจพบ adb ที่สามารถเรียกใช้งานได้ทีละรายการ
  3. เชื่อมต่ออุปกรณ์ Android ของคุณ
  4. เปิดใช้งานตัวเลือกนักพัฒนา
  5. เปิดใช้งานการแก้ไขข้อบกพร่อง USB
  6. เปิดคำสั่ง promt (windows) หรือเทอร์มินัล (linux / mac) วิธีการทำ: บน Windows: windows + r> ป้อน "cmd" (โดยไม่ใส่เครื่องหมายอัญประกาศ)> คลิก enter | บน Linux: คุณไม่รู้วิธีเปิด Terminal หรือไม่? LOL | บน Mac: พิมพ์Terminalเป็น Spotlight และเปิด
  7. CD ไปยังไดเร็กทอรีที่มีไฟล์ adb ที่สามารถเรียกทำงานได้ บน Windows: ไปที่ไดเรกทอรีที่คุณดาวน์โหลดไฟล์ adb ปฏิบัติการได้ Shift + คลิกขวาแล้วเลือก "Open Console" (หรือคล้ายกัน) | บน Linux / Mac: คลิกขวาในไดเรกทอรีและเลือก "เปิด Terminal ที่นี่" (หรือเพียงแค่ CD ลงในไดเรกทอรี)
  8. พิมพ์ cmd / terminal ของคุณ: adb devicesเพื่อตรวจสอบว่าอุปกรณ์ของคุณเชื่อมต่ออย่างถูกต้อง
  9. หากเลือกอุปกรณ์ของคุณอย่างถูกต้องให้พิมพ์adb logcatเพื่อแสดงสแต็กสเต็ปอาถรรพ์ที่ยิ่งใหญ่และเวทมนต์
  10. สร้างข้อผิดพลาดของคุณ (หรืออะไรก็ตาม) บนอุปกรณ์ของคุณ
  11. หลังจากนั้นให้วางทั้งหน้าต่าง cmd / เทอร์มินัลลงในบริการการวางเช่นhttp://pastebin.com/และส่งมาให้เรา

(ส่วนใหญ่คัดลอกมาจากLeandros )


2

แอพฟรีSysInfo ( Project Project ) จะแสดงบันทึกของระบบรวมถึง zip รายงานระบบที่สมบูรณ์เพื่อส่งผ่านอีเมล, dropbox, NFC, และอื่น ๆ อีกมากมายไม่ต้องพูดถึงข้อมูลระบบที่น่าสนใจอื่น ๆ อีกมากมาย


(ใช่ฉันเกือบจะสายปีแล้ว แต่อันนี้ต้องพูดถึง)
JRobert

ลิงก์ทั้งสองเสียตอนนี้
jk7

ลิงค์ที่สอง (หน้าโครงการ) ยังคงใช้ได้สำหรับฉัน แต่รายการสุดท้ายที่อยู่ในนั้นมาจากปี 2010 Android มีการเปลี่ยนแปลงบางครั้งตั้งแต่นั้นมาทำให้ฟังก์ชั่นการทำงานของ Sysinfo เสียหายมาก
JRobert

-1

/sdcard/bugreportsมันตั้งอยู่ใน


3
ฉันไม่เคยมีโฟลเดอร์ดังกล่าวในโทรศัพท์ของฉัน ... นี้เป็นเฉพาะกับผู้ผลิตหรืออุปกรณ์?
Matthew อ่าน

2
จากLogcat - CyanogenMod Wiki : คุณสามารถใช้คีย์ผสมในการสร้างไฟล์ bugreport ใน / sdcard / bugreports ดังนั้นนี่จึงเป็น a) เฉพาะเจาะจงเล็กน้อย (อาจเป็น CM) และ b) ไม่ใช่คำตอบของคำถามเนื่องจาก OP ค้นหาคำว่า "สร้างขึ้นโดยอัตโนมัติ"
Izzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.