溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android App調(diào)試的命令有哪些

發(fā)布時間:2021-12-18 17:04:08 來源:億速云 閱讀:115 作者:iii 欄目:移動開發(fā)

本篇內(nèi)容主要講解“Android App調(diào)試的命令有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Android App調(diào)試的命令有哪些”吧!

1.logcat命令

這個命令最簡單常用,可查看幫助,我不多說,如果需要打印時間,加參數(shù)-v time

adb logcat -v time

2.bugreport命令

這個命令也非常簡單,但是在實際應(yīng)用中非常有用,會有從開機(jī)之后詳細(xì)的dumpsys,dumpstate和logcat信息,是一份完整的日志記錄。對分析用戶行為,異常信息,系統(tǒng)狀態(tài)有很大的參考作用。一般我們會把bugreport導(dǎo)出到電腦上分析。

1adb bugreport > xxx.log

我再次強(qiáng)調(diào),bugreport里面包含豐富的系統(tǒng)和用戶信息,它是其他很多命令輸出的結(jié)果的記錄,非常有用。

3.dumpsys命令

這個查看系統(tǒng)信息,用的還是比較多的.

dumpsys [options]

meminfo 顯示內(nèi)存信息

cpuinfo 顯示CPU信息

account 顯示accounts信息

activity 顯示所有的activities的信息

window 顯示鍵盤,窗口和它們的關(guān)系

wifi 顯示wifi信息

例如查看某個程序內(nèi)存信息:

#查看應(yīng)用com.tianxia.test的內(nèi)存使用情況

adb shell dumpsys meminfo com.tianxia.test

效果圖如下:

Android App調(diào)試的命令有哪些

里面的信息很有價值,尤其對于分析內(nèi)存泄露,內(nèi)存溢出都有極大的作用。

4.top命令

這個查看cpu信息太方便了。

1top -m 5 -t

我們看看效果圖,其中按cpu大小列出5個進(jìn)程列表。

Android App調(diào)試的命令有哪些

com.tianxia.test的cpu過高,會導(dǎo)致手機(jī)發(fā)燙。同時利用這個信息,可以監(jiān)控應(yīng)用cpu的使用,以調(diào)整優(yōu)化代碼。

5.配置文件local.prop

目前網(wǎng)上沒有查到local.prop的配置使用,工作中本人只使用過如下:

1log.tag.SQLiteStatements=VERBOSE log.tag.SQLiteTime=VERBOSE

把上述文本加到/data/local.prop中,如果沒有這個文件自行創(chuàng)建。然后重啟手機(jī),就能看到每個應(yīng)用詳細(xì)的查詢數(shù)據(jù)庫的sql語句信息,對于調(diào)試數(shù)據(jù)庫,分析和優(yōu)化數(shù)據(jù)庫sql異常非常有用。

6.分析手機(jī)發(fā)燙

下面我們來實踐一個例子,手機(jī)發(fā)燙太厲害,怎么找出問題?

首先我們寫一個程序com.tianxia.test,死循環(huán),核心代碼如下:

8@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

while(true) {

System.currentTimeMillis();

}

}

這個應(yīng)用打開后會一直獲取系統(tǒng)時間,因為在主線程,肯定導(dǎo)致應(yīng)用ANR,也會一直浪費(fèi)系統(tǒng)cpu,手機(jī)發(fā)熱,我們運(yùn)行它。

假設(shè)我們不知道上述代碼,我們來找到這個問題:

(1).找到發(fā)燙的應(yīng)用。

使用top命令:

1top -m 5 -t

Android App調(diào)試的命令有哪些

一看是com.tianxia.test占用85%的cpu,原來是這家伙在搗鬼。進(jìn)程ID是644,這個后面我們有用。

(2).分析發(fā)燙的應(yīng)用進(jìn)程在干嘛

需要用到linux下的strace命令,但是android是沒有集成這個命令的,android版本的下載地址:

http://benno.id.au/android/strace

下載完成后,上傳到手機(jī)中:

我們adb push strace /system/bin,在模擬器上是上傳到/system/bin會報out of memory錯誤,我們也可以上傳到/data目錄下,如果沒有執(zhí)行權(quán)限,還需要chmod 777 strace.

strace命令有很多參數(shù),直接執(zhí)行strace會顯示使用說明:

Android App調(diào)試的命令有哪些

其中-p參數(shù)輸入的就是進(jìn)程號,***步中我們找到com.tianxia.test的進(jìn)程ID是644,我們看看這個應(yīng)用占用這么高的cpu在干嘛?

?

1strace -p 644

輸出如下:

Android App調(diào)試的命令有哪些

它的系統(tǒng)調(diào)用一直是gettimeofday,一直輸出這個,顯然哪里一定進(jìn)入死循環(huán)了,而是是獲取時間的死循環(huán),然后結(jié)合logcat和代碼,定位這段代碼(就是前面我們給出的那段代碼了)解決這個bug。

7.采集手機(jī)的cpu運(yùn)行情況.

有時使用日志我們很難針對性的獲取我們想要的信息,我們可能需要寫一些最簡單的腳步放在手機(jī)里面執(zhí)行。

如監(jiān)控cpu占用的記錄cpu_log.sh:

11# !/system/bin/sh

#這個腳步比較粗糙,是這么個意思

file=/sdcard/cpu/cpu_info.log

rm $file

until [ 1 -gt 10000 ]

do

echo -e "\n\n\n\n\n---------------">>$file

date >> $file

top -m 5 -n 1 >> $file

sleep 3

done

每隔3s中就會把手機(jī)的cpu的信息寫到sdcard的cpu目錄下的cpu_info.log文件中,方便我們后續(xù)分析。

ps:使用方法是 push到data目錄下,賦予可執(zhí)行權(quán)限,在shell下執(zhí)行即可。

8.采集某個應(yīng)用的內(nèi)存數(shù)據(jù)

這個實踐和上面的腳本類似,只是命令不一樣我另外單獨(dú)列出來,因為這個有時候很有用。

比如,我們要采集com.tianxia.test的內(nèi)存使用情況,分析它是不是會內(nèi)存泄露,腳步類似:

11# !/system/bin/sh

#這個腳步比較粗糙,是這么個意思

file=/sdcard/cpu/mem_info.log

rm $file

until [ 1 -gt 10000 ]

do

echo -e "\n\n\n\n\n---------------">>$file

date >> $file

dumpsys meminfo com.tianxia.test >> $file

sleep 3

done

使用方法也是一樣。

到此,相信大家對“Android App調(diào)試的命令有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI