日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux和android调试概要

發布時間:2025/4/16 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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獲取中斷信息

總結

以上是生活随笔為你收集整理的linux和android调试概要的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。