การดีบักและการวิเคราะห์ประสิทธิภาพ
เชี่ยวชาญเครื่องมือดีบักและวิเคราะห์ประสิทธิภาพของ Android Studio ได้แก่ จุดหยุดทำงาน Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector และ Layout Inspector
การดีบักและการวิเคราะห์ประสิทธิภาพ เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวมการดีบัก
การแก้ไขข้อบกพร่องคือกระบวนการค้นหาและแก้ไขบั๊ก แอนดรอยด์ สตูดิโอมีเครื่องมือทรงพลังดังนี้:
- เครื่องมือแก้ไขข้อบกพร่อง — หยุดการทำงาน ตรวจสอบตัวแปร และไล่ดูโค้ดทีละขั้น
- Logcat — แสดงบันทึกการทำงานจากอุปกรณ์แบบเรียลไทม์
- เครื่องมือตรวจสอบเค้าโครง — ตรวจสอบลำดับชั้นส่วนติดต่อผู้ใช้ที่กำลังทำงานอยู่
- เครื่องมือวิเคราะห์ประสิทธิภาพ Android — วิเคราะห์ CPU หน่วยความจำ และเครือข่าย
- เครื่องมือตรวจสอบฐานข้อมูล — ดูและเรียกใช้คำสั่งค้นหาฐานข้อมูล Room แบบสด
Logcat — เครื่องมือแก้ไขข้อบกพร่องชิ้นแรกของคุณ
ใช้ Log เพื่อพิมพ์ข้อความไปยัง Logcat และใช้ TAG เพื่อกรองบันทึกการทำงานของคุณ:
import android.util.Log
class UserRepository {
companion object {
private const val TAG = "UserRepo"
}
fun fetchUsers() {
Log.d(TAG, "fetchUsers() called") // Debug
Log.i(TAG, "Fetching ${users.size} users") // Info
Log.w(TAG, "Cache is empty") // Warning
Log.e(TAG, "Network error: $exception") // Error
}
}Timber — การบันทึกการทำงานที่ดีกว่า
Timber เป็นตัวห่อหุ้มบาง ๆ ของ Log ซึ่งจะลบการเรียกใช้บันทึกการทำงานออกจากรุ่นสำหรับเผยแพร่ และเพิ่มชื่อคลาสเป็น TAG โดยอัตโนมัติ:
// app/build.gradle:
// implementation 'com.jakewharton.timber:timber:5.0.1'
// In Application.onCreate():
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
// Usage anywhere in the app (no TAG needed):
Timber.d("User loaded: %s", user.name)
Timber.e(exception, "Failed to fetch data")
Timber.w("Cache miss for key: %s", key)จุดหยุดและเครื่องมือแก้ไขข้อบกพร่อง
ขั้นตอนการแก้ไขข้อบกพร่องด้วยจุดหยุดในแอนดรอยด์ สตูดิโอ:
- คลิกบริเวณขอบด้านซ้ายถัดจากบรรทัดโค้ด — จุดสีแดงจะปรากฏขึ้น
- เรียกใช้แอปด้วย แก้ไขข้อบกพร่อง (ไอคอนรูปแมลง) แทนการเรียกใช้ตามปกติ
- เมื่อการทำงานมาถึงจุดหยุด ระบบจะหยุดชั่วคราว
- ตรวจสอบตัวแปรในแผง ตัวแปร
- ใช้ ข้ามไปยังบรรทัดถัดไป (F8) เพื่อดูโค้ดทีละบรรทัด และใช้ เข้าสู่การทำงานภายใน (F7) เพื่อเข้าไปในฟังก์ชัน
ประเมินนิพจน์
ขณะหยุดอยู่ที่จุดหยุด ให้ใช้ ประเมินนิพจน์ (Alt+F8) เพื่อเรียกใช้โค้ด Kotlin ในขอบเขตปัจจุบัน คุณสามารถตรวจสอบสมมติฐานได้โดยไม่ต้องเริ่มการทำงานใหม่:
- ตรวจสอบ
list.sizeและuser.email.isNotBlank() - เรียกใช้เมธอดใดก็ได้ แล้วดูค่าที่ส่งกลับ
- ตรวจสอบออบเจ็กต์ที่ซับซ้อนได้โดยตรงในบรรทัดนั้น
เครื่องมือวิเคราะห์หน่วยความจำ
ค้นหาหน่วยความจำรั่วด้วย เครื่องมือวิเคราะห์หน่วยความจำ (มุมมอง → หน้าต่างเครื่องมือ → เครื่องมือวิเคราะห์ประสิทธิภาพ):
- ดูขนาดฮีปตามช่วงเวลา — หากเพิ่มขึ้นอย่างต่อเนื่อง มีแนวโน้มว่าจะเกิดการรั่วไหล
- บังคับเรียก GC และสังเกตว่าหน่วยความจำลดลงหรือไม่
- สร้างภาพข้อมูลฮีปเพื่อดูว่าออบเจ็กต์ใดบ้างที่ยังมีอยู่
- มองหาอินสแตนซ์ของ Activity หรือ Fragment ที่ควรถูก GC ไปแล้ว
LeakCanary — ตรวจจับหน่วยความจำรั่วโดยอัตโนมัติ
LeakCanary จะตรวจจับและรายงานหน่วยความจำรั่วโดยอัตโนมัติเป็นการแจ้งเตือนในรุ่นสำหรับแก้ไขข้อบกพร่อง:
// app/build.gradle:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
// That's it — no code changes needed!
// LeakCanary auto-installs via ContentProvider.
// When a leak is detected, it shows a notification with the leak trace.
// Common causes to watch for:
// - Static references to Context/Activity
// - Not releasing ViewBinding in onDestroyView()
// - Listeners registered to singletons but not unregisteredเครื่องมือวิเคราะห์ CPU
ค้นหาคอขวดด้านประสิทธิภาพด้วย เครื่องมือวิเคราะห์ CPU:
- บันทึกการติดตามขณะดำเนินการบางอย่าง
- ดูแผนภูมิเปลวไฟเพื่อดูว่าเมธอดใดใช้เวลามากที่สุด
- มองหางานที่ทำงานนานบน เธรดหลัก — สิ่งนี้ทำให้ส่วนติดต่อผู้ใช้กระตุก
- ย้ายการคำนวณที่ใช้ทรัพยากรมากไปยัง
Dispatchers.IOหรือDispatchers.Default
เครื่องมือตรวจสอบเครือข่าย
เครื่องมือตรวจสอบเครือข่ายจะแสดงการเรียก HTTP ทั้งหมดที่แอปของคุณส่งแบบเรียลไทม์:
- ดู URL ของคำขอ เมธอด ส่วนหัว และเนื้อหา
- ดูรหัสการตอบกลับ เนื้อหา และระยะเวลา
- ระบุคำขอที่ช้าหรือล้มเหลว
- ใช้งานกับ OkHttp ซึ่ง Retrofit ใช้ อยู่แล้วโดยไม่ต้องตั้งค่าเพิ่มเติม
เข้าถึงได้ที่ มุมมอง → หน้าต่างเครื่องมือ → การตรวจสอบแอป → เครื่องมือตรวจสอบเครือข่าย
เครื่องมือตรวจสอบฐานข้อมูล
ตรวจสอบและเรียกใช้คำสั่งค้นหาฐานข้อมูล Room แบบสดบนอุปกรณ์ที่กำลังทำงานอยู่:
- ดูตารางและข้อมูลภายในตาราง
- เรียกใช้คำสั่งค้นหา SQL แบบกำหนดเอง
- ดูข้อมูลที่เปลี่ยนแปลงขณะใช้งานแอป
เข้าถึงได้ที่ การตรวจสอบแอป → เครื่องมือตรวจสอบฐานข้อมูล ใช้กับ Room บน API 26 ขึ้นไป
เครื่องมือตรวจสอบเค้าโครง
เครื่องมือตรวจสอบเค้าโครงจะแสดงมุมมอง 3 มิติของลำดับชั้นส่วนติดต่อผู้ใช้แบบสด:
- เลือกมุมมองใดก็ได้เพื่อดูแอตทริบิวต์ เช่น ระยะขอบ ช่องว่างภายใน ข้อความ และสี
- ค้นหามุมมองที่ซ้อนทับกันหรือการตั้งค่าการมองเห็นที่ไม่ถูกต้อง
- แก้ไขปัญหาเค้าโครงได้โดยไม่ต้องคาดเดา
เข้าถึงได้ที่ มุมมอง → หน้าต่างเครื่องมือ → เครื่องมือตรวจสอบเค้าโครง เชื่อมต่อกับแอปที่กำลังทำงานบนอุปกรณ์หรือโปรแกรมจำลอง
StrictMode
StrictMode ตรวจจับการดำเนินการที่ช้าโดยไม่ตั้งใจบนเธรดหลัก เช่น การอ่านดิสก์และการเรียกเครือข่าย แล้วบันทึกหรือทำให้แอปหยุดทำงานในรุ่นสำหรับแก้ไขข้อบกพร่อง:
// In Application.onCreate() — debug builds only:
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog() // log violations instead of crashing
.build()
)
}ตรวจสอบอย่างรวดเร็ว
เครื่องมือใดตรวจจับหน่วยความจำรั่วในรุ่นสำหรับแก้ไขข้อบกพร่องของ Android โดยอัตโนมัติและไม่ต้องเขียนโค้ดเพิ่มเติม
สรุป: การแก้ไขข้อบกพร่องและการวิเคราะห์ประสิทธิภาพ
ค้นหาและแก้ไขปัญหาได้อย่างมีประสิทธิภาพ:
- Logcat + Timber — การบันทึกการทำงานที่มีน้ำหนักเบา และถูกลบออกโดยอัตโนมัติในรุ่นสำหรับเผยแพร่
- จุดหยุด + เครื่องมือแก้ไขข้อบกพร่อง — หยุดชั่วคราวและตรวจสอบการทำงานจริง
- เครื่องมือวิเคราะห์หน่วยความจำ — ตรวจจับการเพิ่มขึ้นของฮีปและหน่วยความจำรั่ว
- LeakCanary — ตรวจจับหน่วยความจำรั่วโดยอัตโนมัติพร้อมร่องรอยการเรียก
- เครื่องมือวิเคราะห์ CPU — ค้นหาเมธอดที่ทำงานช้าบนเธรดหลัก
- เครื่องมือตรวจสอบเครือข่าย — ตรวจสอบการเรียก HTTP
- เครื่องมือตรวจสอบฐานข้อมูล — เรียกใช้คำสั่งค้นหา Room แบบสด
- StrictMode — ตรวจจับการใช้ IO บนเธรดหลักโดยไม่ตั้งใจ
ยินดีด้วย — คุณเรียนจบหลักสูตรการพัฒนา Android ฉบับเต็มแล้ว
คำถามที่พบบ่อย
บทเรียน “การดีบักและการวิเคราะห์ประสิทธิภาพ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การดีบักและการวิเคราะห์ประสิทธิภาพ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การดีบักและการวิเคราะห์ประสิทธิภาพ”
เชี่ยวชาญเครื่องมือดีบักและวิเคราะห์ประสิทธิภาพของ Android Studio ได้แก่ จุดหยุดทำงาน Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector และ Layout Inspector คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การดีบักและการวิเคราะห์ประสิทธิภาพ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทดสอบหน่วยด้วย JUnit
- การจำลองด้วย Mockito
- การทดสอบส่วนติดต่อผู้ใช้ด้วย Espresso
- การดีบักและการวิเคราะห์ประสิทธิภาพ