常用调试手段
1)C/C++侧反编译调试:
addr2line -e xxx/symbols/xxx.so 0000****
一定要是对带符号的so进行反编译
2)打印调用堆栈
JAVA:
Log.d("test",Log.getStackTraceString(new Throwable()));
C/C++:
#include <utils/CallStack.h>
CallStack stack;
stack.update();
stack.log("test", ANDROID_LOG_ERROR, "callstack");
若编译报错,则需要在Android.bp的shared_libs字段中添加对libutilscallstack的依赖
LINUX常用命令
1)查找字符串
find . -name "*.java"|xargs grep "targetStr"
git常用命令
1)查看某一个文件的git log
git log --pretty=oneline 文件名
2)查看文件每一行的修改
git blame file
3)回退到某一个commit点
git reset --hard commit_id
ADB常用命令
1) monkey测试
adb shell monkey -p app_name --throttle 1000 99999999 &
2) 查找应用安装路径
adb shell pm path app_name
3)查看应用view的层级
adb shell dumpsys activity app_name
4) 在手机中查找文件
adb shell登录后,find . -iname target*File 2>/dev/null
5) 主动抓ANR的trace
adb shell登录后,kill -3 pid,会自动生成该进程的trace
6)手机截屏存到电脑
adb exec-out screencap -p > d:\test.png