linux和android调试概要

1. 抓取linux内核启动的完整信息

需要增大缓冲区大小,目前默认为128KB,参考链接:点击打开链接

2.Android内核开发:学会分析系统的启动log点击打开链接

3.将init进程的详细log输出到dmesg文件中

修改/system/core/rootdir/init.rc,把loglevel从3改为7

4. framework的调试

4.1 比如修改frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\NavigationBarView.java

对应SystemUI.apk,可调用Log.i, Log.d ,Log.e增加打印信息,进入frameworks\base\packages\SystemUI目录下mm生成新的apk在out目录下的system\priv-app\SystemUI下,然后push到系统对应的目录下,重启即可。

5.音频调试可以用tinymix命令,参考链接点击打开链接

6.msm8937_camera.xml替换和修改

7.查看CPU占用adb shell top  -d 1 -s cpu |findstr com.golive.cinema

8.查看具体apk占用adb shell dumpsys cpuinfo|findstr com.golive.cinema

9.内存adb shell dumpsys meminfo

更合适的方法cat  /proc/meminfo

adb shell "cat /proc/meminfo"  E:\debug\meminfo.txt,看MemAvailable的内容,比如我的

MemTotal:        1921372 kB

MemFree:          318416 kB

MemAvailable:    1125424 kB

各项的具体含义见

kernel\msm-3.18\Documentation\filesystems\proc.txt

10. logcat  >  /data/log.txt &可以在后台打印出log 到log.txt中去,就算拔出USB线也没关系

如果要打印的log再加上系统时间的话该怎么办呢?logcat -v time > log.txt&

11.获取APP UID

(1) 系统刚启动的时候,会对每个app分配一个uid,
最简单的获取方式就是通过adb ,不过限于eng或userdebug版
adb pull  data/system/packages.list   d:\

参考点击打开链接

(2) 通过PS命令获取

在adb shell敲入ps,得到运行的进程的列表,如下一个小截屏:

这里写图片描述

u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于com.android.systemui,它的user是u0_a12,按前面的规制,它的UID就是12 + FIRST_APPLICATION_UID = 10012。

参考点击打开链接

12. 涉及SEAndroid权限问题,程序创建目录的时候有权限问题系统会打印出avc的log,根据log来配置

13.打开和关闭飞行模式

//开启飞行模式
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
//关闭飞行模式
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

14.echo “7 7 1 7” > /proc/sys/kernel/printk

15.cat 重定向到你的cache下

cat init.rc > /cache/1.txt

16 升级包的update-binary和updater-script
刚开始来之out目录下的ota.zip包,其中update-binary源代码位于bootable\recovery\updater下。可通过mmma bootable/recovery/updater的方式编译,但此编译方式和整个编译make -j32方式生成的updater路径和大小不一样
(1) mmma bootable/recovery/updater
编译生成为out\target\product\msm8937_64\system\bin\updater下,大小为1189KB

(2) make -j32
编译生成为out\target\product\msm8937_64\symbols\system\bin\updater,大小为12075KB

将updater重命名为update-binary即可。

17.查看经常是否在运行

比如ps | grep memdetector

18.file_contexts.bin 和 file_contexts互转,支持到android8.来自于点击打开链接

file_contexts.bin 转换成 file_contexts,命令如下:
./sefcontext -o file_contexts file_contexts.bin  sefcontext


file_contexts 转换成 file_contexts.bin,命令如下:
./sefcontext_compile -o file_contexts.bin file_contexts  sefcontext_compile

19.Android ART模式,不重新烧录system.img的情况下如何修改framework和app

(1)编译
(2)连接手机
(3) croot && adb remount && adb sync system && adb reboot 

第三步省去了重新烧版本的麻烦

20. adb logcat 2>&1 | tee log.log

2是标准错误,&1是标准输出,2>&1意思就是将标准错误输出到标准输出中。

21.C/C++  file log

22. 内核中C文件log

23.fastboot分割镜像文件过大的解决方法

sending sparse 'system' (524307 KB)...
FAILED (remote: data too large)
finished. total time: 35.354s
Flash system error

解决方法:
fastboot flash -S 500M system system.img
fastboot支持的-S选项:
options:
-S <size>[K|M|G]                         Automatically sparse files greater  than 'size'. 0 to disable.

24.adb命令打开摄像头

adb shell am start -a android.media.action.STILL_IMAGE_CAMERA

25.背光设置

adb shell settings get system screen_brightness

adb shell settings put system screen_brightness 150

26.编译的时候,用 screen 开一个会话吧,这样断网了也不会影响编译

27. push文件到根目录/,比如init.rc

先adb root、adb remount、mount -o rw -o remount /dev/block/actb /  ,这样就可以push了,否则提示 remote Read-only file system

28. *#06#查看MEID和IMEI号

29.android开始增加vendor分区,make vnod可以编译生成vendor.img

30. 执行dmesg命令,可以查看全部消息。如果想把log信息保存到文件,可以用adb shell dmesg >D:/Kernel.log.

31. adb shell 然后执行 cat /proc/kmsg。程序里面用printk函数打印的信息会显示出来。用cat /proc/kmsg命令打印出来的信息跟与dmesg 有不同, 第一次执行/proc/kmsg 打印到当前时间的所有内核信息,再次执行cat /proc/kmsg,不会再打印已经打印的信息,只打印上一次执行之后打印出来的新的信息。

32.adb命令播放mp3文件

adb shell am start -a android.intent.action.VIEW -t "audio/mp3" -d "file:///storage/emulated/0/Music/test.mp3"

33.adb命令拨打电话和挂掉

adb shell am start -a android.intent.action.CALL -d tel:10010
挂断:adb shell service call phone 3

34.wm 是查看和设置显示信息的指令,此指令只能临时调试使用,比如wm density:查看和设置显示密度

Android wm指令用法详解 - LeeAaron - 博客园

35.抓avc log

adb shell
su
dmesg | grep avc   (这个是一次性出来的)
logcat -v time | grep avc (这个是持续抓的)
可以开两个DOS窗口抓取

36.查看是否是签名的系统

37.  i2c-tools、设备树等工具,便于开发调试

Index of /pub/software/utils/

38. cat /proc/interrupts | grep ExtVoiceWakeup获取中断信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值