Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
像Java, C++带类继承,有时候分析流程会找晕,可以通过dump callstack快速了解调用过程
Java中:
Log.e("kris",Log.getStackTraceString(new Throwable()));
C++中:
#include <utils/CallStack.h>
android::CallStack cs("kris");
android.mk
LOCAL_SHARED_LIBRARIES := \
libutils \
Kernel中:
dump_stack();
Java和C++ log示例如下:
kris@:~/rk3288/frameworks/base$ adb logcat -s kris
--------- beginning of main
--------- beginning of system
01-06 07:53:13.505 555 555 E kris : java.lang.Throwable
01-06 07:53:13.505 555 555 E kris : at com.android.server.camera.CameraService.notifyMediaserverLocked(CameraService.java:263)
01-06 07:53:13.505 555 555 E kris : at com.android.server.camera.CameraService.switchUserLocked(CameraService.java:228)
01-06 07:53:13.505 555 555 E kris : at com.android.server.camera.CameraService.onStartUser(CameraService.java:191)
01-06 07:53:13.505 555 555 E kris : at com.android.server.SystemServiceManager.startUser(SystemServiceManager.java:150)
01-06 07:53:13.505 555 555 E kris : at com.android.server.am.ActivityManagerService.systemReady(ActivityManagerService.java:12084)
01-06 07:53:13.505 555 555 E kris : at com.android.server.SystemServer.startOtherServices(SystemServer.java:1181)
01-06 07:53:13.505 555 555 E kris : at com.android.server.SystemServer.run(SystemServer.java:279)
01-06 07:53:13.505 555 555 E kris : at com.android.server.SystemServer.main(SystemServer.java:171)
01-06 07:53:13.505 555 555 E kris : at java.lang.reflect.Method.invoke(Native Method)
01-06 07:53:13.505 555 555 E kris : at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:772)
01-06 07:53:13.505 555 555 E kris : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
01-06 07:53:13.516 212 390 D kris : #00 pc 0004f9a3 /system/lib/libcameraservice.so (_ZN7android13CameraService12doUserSwitchEPKij+222)
01-06 07:53:13.516 212 390 D kris : #01 pc 0004fc57 /system/lib/libcameraservice.so (_ZN7android13CameraService17notifySystemEventEiPKij+42)
01-06 07:53:13.516 212 390 D kris : #02 pc 0001ddad /system/lib/libcamera_client.so (_ZN7android15BnCameraService10onTransactEjRKNS_6ParcelEPS1_j+1420)
01-06 07:53:13.516 212 390 D kris : #03 pc 00049763 /system/lib/libcameraservice.so (_ZN7android13CameraService10onTransactEjRKNS_6ParcelEPS1_j+174)
01-06 07:53:13.516 212 390 D kris : #04 pc 0001a19d /system/lib/libbinder.so (_ZN7android7BBinder8transactEjRKNS_6ParcelEPS1_j+60)
01-06 07:53:13.516 212 390 D kris : #05 pc 0001f4b1 /system/lib/libbinder.so (_ZN7android14IPCThreadState14executeCommandEi+532)
01-06 07:53:13.516 212 390 D kris : #06 pc 0001f61d /system/lib/libbinder.so (_ZN7android14IPCThreadState20getAndExecuteCommandEv+64)
01-06 07:53:13.516 212 390 D kris : #07 pc 0001f681 /system/lib/libbinder.so (_ZN7android14IPCThreadState14joinThreadPoolEb+48)
01-06 07:53:13.516 212 390 D kris : #08 pc 00023fcd /system/lib/libbinder.so
01-06 07:53:13.516 212 390 D kris : #09 pc 00010855 /system/lib/libutils.so (_ZN7android6Thread11_threadLoopEPv+112)
01-06 07:53:13.516 212 390 D kris : #10 pc 000417c7 /system/lib/libc.so (_ZL15__pthread_startPv+30)
01-06 07:53:13.516 212 390 D kris : #11 pc 00019313 /system/lib/libc.so (__start_thread+6)