1.java进程的trace文件解析
2.native进程的trace文件解析
当应用发生ANR时,系统会向目标进程发送SIGNAL_QUIT信号,ART虚拟机会捕获这个信号然后生成trace信息保存到data/anr/trace.txt文件中并kill掉目标进程。trace.txt文件信息中包括了进程id,发生异常的时间,进程下面所有线程相关的状态信息(比如线程名称,优先级,执行时间,加锁状态等等)。
通过debuggerd -b [pid],可输出Native进程的调用栈,这些信息是通过解析/proc/[pid]/maps而来的。
native进程发生crash时会输出:发生crash的函数指针地址 + 函数关联的so文件 + 函数名和函数地址偏移量,如下所示:
#01 pc 000000000001cca4 /system/lib64/libc.so (epoll_pwait+32)
帧号 pc指针 map_name (函数名+偏移量)
#01 pc 000000000001cca4 /system/lib64/libc.so (epoll_pwait+32)