watchdog 的类型:
1:android.server.ServerThread被block,LOG如下:
02:06:22.571 W/Watchdog( 307): *** WATCHDOG KILLING THE SYSTEM: null
02:06:22.571 W/Watchdog( 307): *** WATCHDOG KILLING THE SYSTEM: activityManagerService
如何DEBUG watchdog?
第一种类型的watchdog,我们要首先看trace.txt中serverThread的调用栈. 为什么呢?
因为system server启动服务 要分两个过程, 一个是init1()和 init2(),
前者是启动native service, 比如:surfaceFlinger, AudioFlinger...
后者就是启动android services, 比如: activityManager, WindowManager...
而启动android services是在serverThread中进行,代码如下:
public static final void init2() {
Slog.i(TAG, "Entered the Android system server!");
Thread thr = new ServerThread();
thr.setName("android.server.ServerThread");
thr.start();
}
其次,如果遇到调用了native的代码,就可以用gdb或者crash继续debug.
第二种类型 看trace.txt中对应死锁进程的调用栈。