Ответ
Для дебага многопоточного кода в Android можно использовать:
- Логирование - добавление логов с Thread.currentThread().name для отслеживания потоков:
Log.d("THREAD_DEBUG", "Current thread: ${Thread.currentThread().name}")
-
Thread.currentThread().stackTrace - вывод стека вызовов для анализа deadlock'ов
-
Android Studio Debugger:
- Точки останова с условиями
- Suspend policy "All" для остановки всех потоков
- Просмотр всех потоков в Debug окне
-
StrictMode для обнаружения операций в UI потоке:
StrictMode.setThreadPolicy(ThreadPolicy.Builder()
.detectNetwork()
.penaltyLog()
.build())
-
Systrace для анализа производительности и взаимоблокировок
-
Custom ThreadPoolExecutor с логированием задач
Для сложных случаев лучше использовать комбинацию этих методов.