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获取中断信息

linux和android调试概要相关推荐

  1. Android Linux内核编译调试

    对于在Windows上写代码写习惯的人,调试是必不可少的手段,但是转到Android以后,发现调试手段异常简陋,跟Windows简直不是一个级别,特别是Android的内核调试,网上资料也相对较少,不 ...

  2. Linux / Windows Subsystem for Linux (WSL) 安装 ADB (Android Debug Bridge,Android 调试桥)

    Linux / Windows Subsystem for Linux (WSL) 安装 ADB (Android Debug Bridge,Android 调试桥) Android 开发者网站 ht ...

  3. 安卓从sd引导linux,从android中的adb shell手动挂载SD卡

    我不敢相信没有人在2个月内回复你?哇-多么懈怠! 好吧无论如何我想我应该填写一些信息并提出一些问题. 1).您是否拥有root权限,或者是否从发布映像/固件中获取了系统vold?像Linux Supe ...

  4. Android 系统(249)---Android调试技巧(一)

    Android调试技巧(一) 本文介绍一些Android常见的调试技巧 一. 获取Trace 调用栈信息(Trace)是分析异常经常使用的,这里简单划分两类情况: 当前线程Trace: 当前执行流所在 ...

  5. android命令大全 pdf,android调试桥(adb)常用命令.pdf

    Android 调试桥 (adb) 是多种用途的工具,该工具可以帮助你管理设备或模拟器的状态. 可以通过下列几种方法加入 adb: 在设备上运行 shell 命令 通过端口转发来管理模拟器或设备 从模 ...

  6. 安卓linux层,Android 系统架构各层介绍

    android的系统架构采用了分层架构的思想,作为android开发猿还是有必要大概了解一下的,先看一下系统架构图 20190626110750560.png Linux 内核 Android 平台的 ...

  7. 在真实设备上进行Android调试

    本教程将向您展示如何在真正的Android设备(手机)上调试Android应用程序. 本教程中的工具和环境: Eclipse IDE 3.7 + ADT插件 三星Galaxy S2 Windows 7 ...

  8. Windows 10 安装 ADB (Android Debug Bridge,Android 调试桥)

    Windows 10 安装 ADB (Android Debug Bridge,Android 调试桥) Android Debug Bridge (adb) is a command line to ...

  9. android 调试笔记

    android 调试笔记 adb使用: 连接不上手机 C:\Users\Administrator\.android\adb_usb.ini   增加一行内容:  0x1782 安装第三方应用 $ a ...

最新文章

  1. 360金融发布Q2财报:净利6.92亿,同比增长114%,大数据与AI加持的科技服务是新亮点?
  2. 大二发SCI!这位985大学学霸,获MIT博士全奖!
  3. oracle命令行查看编码,Oracle数据库查看编码和修改编码
  4. rest api如何创建_创建一个安全的Spring REST API
  5. kaggle共享单车数据分析及预测(随机森林)
  6. google bert
  7. eclipse中export 的jar file与 runnable jar file的区别
  8. github可以刷星吗_国内某知名社区居然也在GitHub上玩起了刷星活动
  9. web service中配置tcp/ip监视器
  10. Linux服务端rpm包安装Jenkins
  11. 每周论文精读04——A Survey on 3D Hand Pose Estimation: Cameras, Methods, and Datasets
  12. 2022暑期实习网易互娱游戏研发
  13. 关于云音乐数据治理的实践与思考
  14. CSS实现水平垂直居中的方式有哪些?
  15. 会议通知html页面,【会议通知H5】送你最新会议邀请函H5教程,请点击查收!
  16. 计算机用户名密码不知道了怎么改,电脑系统账号administrator设置了密码,密码忘记了怎么办?...
  17. vlc录制网络流_vlc如何播放网络流
  18. 【STM32F429开发板用户手册】第34章 STM32F429的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)
  19. 区块链信息安全(区块链信息安全关键技术研究)
  20. [废弃]想写一个玩魔方的游戏

热门文章

  1. Maven中的dependencyManagement 意义
  2. java split 逗号_java截取之空字符丢失
  3. 记住linux terminal下的快捷键,提高操作效率!
  4. Layout动画:在android布局发生变化时添加动画效果
  5. enter your credential for http://dev.azure.....Fatal:Authentication failed for ;;
  6. java动态添加组件_有关Java Swing动态增加组件
  7. list index out of range怎么解决_“卿卿我我”和“如胶似漆”英语怎么说?
  8. mysql 函数索引_MySQL 8.0 索引特性1-函数索引
  9. mysql 的文件介绍_mysql 数据文件介绍
  10. mysql syncbinlog_Mysql之sync-binlog参数