android下的一些调试方法
来源:互联网 发布:Windows10编程软件 编辑:程序博客网 时间:2024/05/22 13:43
工作中android调试方法有很多,借此文章在此记录下工作上常用的一些命令。
1、dumpsys
使用方法:dumpsys service
列出该service的相关信息。十分强大,可以看到很多信息。
service可以通过service list命令来查看系统有哪些service,通常,使用dumpsys还会加上grep来过滤出想要的字段,不然信息有点太多。
2、bugreport
使用方法:bugreport > xxx.log
这个命令实际应用中非常有用,能保存开机之后详细的dumpsys,dumpstate和logcat信息。
3、addr2line
使用方法:addr2line -e xxx address 可以addr2line –help查看
addr2line 是linux中常用的追踪堆栈的调试工具,在android中,一些库的死机,可以用addr2line 来找到问题所在,是很方便的。前提是该库没有strip,所以我们调试时,要去out目录下的obj中找到相应的未strip的库。
例子:
I/DEBUG ( 1444): backtrace:I/DEBUG ( 1444): #00 pc 00022048 /system/lib/libc.so (tgkill+12)I/DEBUG ( 1444): #01 pc 00013099 /system/lib/libc.so (pthread_kill+48)I/DEBUG ( 1444): #02 pc 000132ad /system/lib/libc.so (raise+10)I/DEBUG ( 1444): #03 pc 0003b9c0 /system/lib/libc.so (__aeabi_idiv0+8)I/DEBUG ( 1444): #04 pc 000003cf /system/lib/libfunc.so (function+6)addr2line -e ./out/target/product/Hi3796MV100/obj/SHARED_LIBRARIES/libfunc_intermediates/LINKED/libfunc.so 000003cf/home/wusc/Hi3796MV100-2015-2-3-CP058/anticopy/function.c:8这样我们就知道错误是在function.c的第八行
4、打印堆栈
1、 java代码中打印堆栈
Java代码打印堆栈比较简单, 堆栈信息获取和输出。通常的方法是使用exception的printStackTrace()方法:
try { ...} catch (RemoteException e) { e.printStackTrace(); ...}
当然也可以只打印堆栈不退出,这样就比较方便分析代码的动态运行情况。Java代码中插入堆栈打印的方法如下:
Log.d(TAG,Log.getStackTraceString(new Throwable()));
通常我们还可以结合ps命令,来查看相应的进程是谁,清晰的看到代码调用过程。
2、C++代码中打印堆栈
C++也是支持异常处理的,异常处理库中,已经包含了获取backtrace的接口,Android也是利用这个接口来打印堆栈信息的。在Android的C++中,已经集成了一个工具类CallStack,在libutils.so中。使用方法:
#include <utils/CallStack.h>...CallStack stack;stack.update();stack.dump();
5、cat命令看节点信息
这个就不说了,因为每个芯片按照自己对kernel的不同修改,节点信息肯定是不一样的,但是基本上我们都是可以通过sys和proc来查看到系统运行的状态,这个在实际工作中十分有用。
6、top和free查看cpu和内存情况
使用方法:top -t -d 1 -m 10每隔1s中,最多显示10个线程。
top -p pid
top –help
查看进程(线程)对cpu memory的使用情况。
free命令可以列出当前内存使用情况。
7、gdb使用core dump调试
使用方法:
1、在终端上输入:ulimit -c unlimited
2、如有需要,可以将coredump放到u盘中,
echo “/mnt/usb/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
3、执行可执行文件,并产生core dump
4、修改权限chmod 777 core
5、在pc端,执行gdb main.out core
- android下的一些调试方法
- Android下binary级的一些分析调试方法
- Android下binary级的一些分析调试方法
- Android下binary级的一些分析调试方法
- Linux下多线程调试的一些方法
- 记录的一些Android调试方法
- Android下的一些调试手段(含kernel调试办法)
- Android下的一些调试手段(含kernel调试办法)
- 调试的一些方法
- ubuntu下调试android手机的方法
- 关于调试的一些方法
- 调试接口的一些方法
- 关于调试的一些方法:
- Windows下,Android模拟器调试串口的方法
- Android下用GDB调试.so的方法
- Ubuntu下调试Android真机连接ADB的方法
- Android在不同状态下的调试方法
- Android下个人整理的一些工具方法
- ZOJ Light Bulb 3203【思维】
- Android Multimedia Framework 架构--base on jellybean(二)
- C++ 二叉查找树
- redis基本数据类型和常用命令操作
- Android:ViewGroup事件分发机制详解
- android下的一些调试方法
- jQuery插件开发全解析
- 文章标题
- Spring 注解 @Resource和@Autowired
- [译] 适配 Android N 多窗口特性的 5 个要诀
- UML图总览
- 远程登录服务器
- 傅里叶变换的解释与推导
- App Extension如何使用主工程中的代码