Debugowanie i profilowanie
Opanuj narzędzia debugowania i profilowania w Android Studio: punkty przerwania, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector i Layout Inspector.
Debugowanie i profilowanie to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.
Przegląd debugowania
Debugowanie to proces znajdowania i naprawiania błędów. Android Studio udostępnia zaawansowane narzędzia:
- Debugger — wstrzymywanie wykonywania, sprawdzanie zmiennych, przechodzenie przez kod krok po kroku
- Logcat — wyświetlanie logów z urządzenia w czasie rzeczywistym
- Layout Inspector — sprawdzanie hierarchii interfejsu użytkownika na żywo
- Android Profiler — analiza procesora, pamięci i sieci
- Database Inspector — wyświetlanie i wykonywanie zapytań w bazach Room na żywo
Logcat — pierwsze narzędzie do debugowania
Użyj Log, aby wyświetlać komunikaty w Logcat. Użyj TAG, aby filtrować logi:
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 — lepsze logowanie
Timber to cienka nakładka na Log, która usuwa wywołania logowania z kompilacji produkcyjnych i automatycznie dodaje nazwę klasy jako 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)Punkty przerwania i debugger
Jak debugować za pomocą punktów przerwania w Android Studio:
- Kliknij obszar obok numerów wierszy, po lewej stronie kodu — pojawi się czerwona kropka
- Uruchom aplikację za pomocą opcji Debug (ikona robaka), a nie Run
- Gdy wykonywanie dotrze do punktu przerwania, zostanie wstrzymane
- Sprawdź zmienne w panelu Variables
- Użyj opcji Step Over (F8), aby przechodzić wiersz po wierszu, oraz Step Into (F7), aby wejść do funkcji
Ewaluacja wyrażenia
Po wstrzymaniu wykonywania w punkcie przerwania użyj opcji Evaluate Expression (Alt+F8), aby uruchomić kod Kotlin w bieżącym zakresie. Sprawdzaj założenia bez ponownego uruchamiania aplikacji:
- Sprawdź
list.sizeiuser.email.isNotBlank() - Wywołaj dowolną metodę i zobacz zwracaną wartość
- Sprawdzaj złożone obiekty bezpośrednio w kodzie
Profiler pamięci
Znajduj wycieki pamięci za pomocą Memory Profiler (View → Tool Windows → Profiler):
- Obserwuj rozmiar sterty w czasie — stały wzrost prawdopodobnie oznacza wyciek
- Wymuś działanie GC i sprawdź, czy ilość zajętej pamięci spadnie
- Utwórz zrzut sterty, aby zobaczyć, które obiekty nadal istnieją
- Poszukaj instancji Activity lub Fragment, które powinny zostać usunięte przez GC
LeakCanary — automatyczne wykrywanie wycieków
LeakCanary automatycznie wykrywa wycieki pamięci i zgłasza je jako powiadomienia w kompilacjach debugujących:
// 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 unregisteredProfiler procesora
Znajduj wąskie gardła wydajności za pomocą CPU Profiler:
- Nagraj ślad podczas wykonywania działania
- Wyświetl wykres płomieniowy, aby sprawdzić, które metody zajmują najwięcej czasu
- Poszukaj długo wykonywanych operacji w main thread — powodują one zacinanie interfejsu
- Przenieś intensywne obliczenia do
Dispatchers.IOlubDispatchers.Default
Inspektor sieci
Network Inspector pokazuje w czasie rzeczywistym wszystkie wywołania HTTP wykonywane przez aplikację:
- Wyświetl adres URL żądania, metodę, nagłówki i treść
- Wyświetl kod odpowiedzi, treść i czas wykonania
- Znajduj powolne lub kończące się niepowodzeniem żądania
- Działa od razu z OkHttp (używanym przez Retrofit)
Otwórz go przez View → Tool Windows → App Inspection → Network Inspector.
Inspektor bazy danych
Sprawdzaj bazę danych Room i wykonuj na niej zapytania na żywo, gdy aplikacja działa na urządzeniu:
- Wyświetlaj tabele i ich zawartość
- Wykonuj niestandardowe zapytania SQL
- Obserwuj zmiany danych podczas korzystania z aplikacji
Otwórz narzędzie przez App Inspection → Database Inspector. Działa z Room na API 26 i nowszym.
Inspektor układu
Layout Inspector pokazuje na żywo trójwymiarowy widok hierarchii interfejsu użytkownika:
- Wybierz dowolny widok, aby zobaczyć jego atrybuty (marginesy, wypełnienie, tekst, kolor)
- Znajduj nakładające się widoki lub nieprawidłową widoczność
- Debuguj problemy z układem bez zgadywania
Otwórz narzędzie przez View → Tool Windows → Layout Inspector. Połącz je z działającą aplikacją na urządzeniu lub emulatorze.
StrictMode
StrictMode wykrywa przypadkowo wolne operacje w głównym wątku (odczyty z dysku, wywołania sieciowe), a następnie zapisuje je w logu lub powoduje awarię aplikacji w kompilacjach debugujących:
// In Application.onCreate() — debug builds only:
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog() // log violations instead of crashing
.build()
)
}Szybkie sprawdzenie
Jakie narzędzie automatycznie wykrywa wycieki pamięci w kompilacjach debugujących Androida bez konieczności dodawania kodu?
Podsumowanie: debugowanie i profilowanie
Znajduj i naprawiaj problemy skutecznie:
- Logcat + Timber — lekkie logowanie, automatycznie usuwane w kompilacji produkcyjnej
- Breakpoints + Debugger — wstrzymywanie i sprawdzanie wykonywania na żywo
- Memory Profiler — wykrywanie wzrostu rozmiaru sterty i wycieków
- LeakCanary — automatyczne wykrywanie wycieków wraz ze śladem stosu
- CPU Profiler — znajdowanie wolnych metod w głównym wątku
- Network Inspector — monitorowanie wywołań HTTP
- Database Inspector — wykonywanie zapytań w Room na żywo
- StrictMode — wykrywanie przypadkowych operacji wejścia-wyjścia w głównym wątku
Gratulacje — ukończyli Państwo cały kurs programowania na Androida!
Często zadawane pytania
Czy lekcja „Debugowanie i profilowanie” jest bezpłatna?
Tak — pełny tekst „Debugowanie i profilowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Debugowanie i profilowanie”?
Opanuj narzędzia debugowania i profilowania w Android Studio: punkty przerwania, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector i Layout Inspector. Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Android Academy?
Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Debugowanie i profilowanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?
Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Testy jednostkowe z JUnit
- Mockowanie za pomocą Mockito
- Testowanie interfejsu z Espresso
- Debugowanie i profilowanie