Android 調(diào)試技巧

作為一名碼農(nóng),代碼調(diào)試是一項(xiàng)不可或缺的工作,過程中總能發(fā)現(xiàn)一下能提高效率、有用的小技巧,此文特總結(jié)一些工作用到的一些調(diào)試技巧。

Debug技巧

斷點(diǎn)debug大家都會(huì)使用,但除了單步調(diào)試之外,用過條件斷點(diǎn),日志斷點(diǎn)么,一些很有用的debug技巧或許你不知道。。

  • 臨時(shí)斷點(diǎn)

顧名思義,臨時(shí)性斷點(diǎn),在第一次觸發(fā)后會(huì)自動(dòng)被移除

臨時(shí)斷點(diǎn)

觸發(fā)鍵:Alt + 鼠標(biāo)左鍵

  • 禁用斷點(diǎn)

當(dāng)你需要臨時(shí)禁用一些斷點(diǎn),但不想下一次再重新創(chuàng)建這些斷點(diǎn)的時(shí)候有用

禁用斷點(diǎn)

觸發(fā)鍵:Alt + 鼠標(biāo)左鍵

  • 計(jì)算表達(dá)式

當(dāng)你需要臨時(shí)改變某個(gè)變量的值或者查看其內(nèi)部方法返回值時(shí)很有用

計(jì)算表達(dá)式

觸發(fā)鍵:Alt + F8

  • 計(jì)算表達(dá)式

當(dāng)你需要臨時(shí)改變某個(gè)變量的值或者查看其內(nèi)部方法返回值時(shí)很有用

計(jì)算表達(dá)式

觸發(fā)鍵:Alt + F8

  • 檢查表達(dá)式

不需要打開表達(dá)式計(jì)算框就可以看到計(jì)算結(jié)果

檢查表達(dá)式

觸發(fā)鍵: 選中表達(dá)式,Alt + 鼠標(biāo)左鍵

  • 條件斷點(diǎn)

在特定條件下才斷點(diǎn)

條件斷點(diǎn)

觸發(fā)鍵:鼠標(biāo)右鍵點(diǎn)擊斷點(diǎn)

  • 日志斷點(diǎn)

厭倦了每次輸出一個(gè)log都得重新發(fā)布項(xiàng)目?試試日志斷點(diǎn),無痛解決你的問題

日志斷點(diǎn)

觸發(fā)鍵:鼠標(biāo)右鍵點(diǎn)擊斷點(diǎn)后-->more-->勾掉suspend 屬性(應(yīng)用不掛起)-->填上想要輸出的日志信息

ADB技巧

adb作為android開發(fā)一個(gè)常用的工具,神馬install,uninstall,push,pull命令就不用說了,它還有很多有用命令。。

  • 刪除文件夾及其下面所有文件

adb shell rm -r /sdcard/xx/

  • 應(yīng)用程序恢復(fù)初始狀態(tài):清除數(shù)據(jù)

adb shell pm clear com.xx.xx(包名)

  • 測(cè)試軟件的穩(wěn)定性、健壯

adb shell monkey --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --ignore-native-crashes -s 100 -v -v --throttle 100 -p com.xx.xx(包名) 10000 > ~/Downloads/monkey_test.txt

  • 獲取設(shè)備分辨率

adb shell wm size

或者

adb shell dumpsys display | grep  DisplayDeviceInfo

adb shell dumpsys: 個(gè)人覺得是最有用的adb命令,默認(rèn)打印出當(dāng)前系統(tǒng)所有service信息,在后面可加上具體的服務(wù)名。 需要列出當(dāng)前運(yùn)行的服務(wù),可運(yùn)行: adb shell dumpsys | grep DUMP

  • 獲取內(nèi)存信息

adb shell dumpsys meminfo

  • 要獲取具體應(yīng)用的內(nèi)存信息,可加上包名

adb shell dumpsys meminfo com.xx.xx

通常來說: Heap Free > Pss Total > Private Dirty

具體參數(shù)說明,可以參考 官方文檔

  • 列出系統(tǒng)所有屬性

adb shell getprop

>獲取分辨率密度:adb shell getprop |grep ro.sf.lcd_density

>獲取系統(tǒng)版本:  adb shell getprop |grep ro.build.version.release

  • 查看Activity任務(wù)棧

adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'

  • 啟動(dòng)默認(rèn)瀏覽器打開一個(gè)網(wǎng)頁

adb shell am start -a android.intent.action.VIEW -d http://baidu.com

網(wǎng)絡(luò)調(diào)試技巧

日常開發(fā)中,不可避免的需要聯(lián)網(wǎng)操作,這可能就需要懂一些網(wǎng)絡(luò)調(diào)試技巧了,而抓包就是最基本的網(wǎng)絡(luò)調(diào)試技巧。。

HTTP或HTTPS抓包( finddler(windows)/charles)

這個(gè)就不多說了,網(wǎng)上教程一大堆。。

charles使用教程

finddler使用教程

TCP非實(shí)時(shí)抓包(tcpdump)

前提:Root

  • 這里 下載 tcpdump

  • 將 tcpdump 放入手機(jī): adb push ~/tcpdump /data/local/tcpdump

  • 將 tcpdump 的權(quán)限變?yōu)榭蓤?zhí)行:chmod +x tcpdump

  • 開始抓包: /data/local/tcpdump -vv -s 0 -w /mnt/sdcard/pcapture.pcap。其中 "-s 0" 表示每個(gè)包都抓取全部長度,而不是部分長度;"-w /mnt/sdcard/pcapture.pcap" 表示抓取的包寫入指定文件;"-vv" 表示顯示多一些信息,如果要顯示更多信息可以用 "-vvv"

  • 按下 "contrl+c" 結(jié)束抓包。

  • 將"/mnt/sdcard/pcapture.pcap" 移到電腦上: adb pull /mnt/sdcard/pcapture.pcap <指定目錄>

  • 通過 Wireshark 或者charles進(jìn)行分析。

TCP實(shí)時(shí)抓包(wireshark+tcpdump)

參考文章

基本思路:

基本思路
  • 手機(jī)開始抓包:在 adb shell 中運(yùn)行 /data/local/tcpdump -n -s 0 -w - | nc -l -p 12345

  • 將手機(jī)抓的包傳送到電腦的 Wireshark 中:另開一個(gè)終端運(yùn)行

adb forward tcp:12345 tcp:12345 && nc 127.0.0.1 12345 | /Applications/Wireshark.app/Contents/MacOS/wireshark -k -S -i - ```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄: chrome遠(yuǎn)程調(diào)試android webview 解決Hierarchy Viewer無法使用的問題 查...
    ahking17閱讀 1,537評(píng)論 0 5
  • 其實(shí)android 可以不通過USB連接線調(diào)試的,也可以在無線網(wǎng)絡(luò)的環(huán)境下連接。具體方法如下: 使用USB數(shù)據(jù)線連...
    漸行漸遠(yuǎn)的術(shù)士閱讀 163評(píng)論 0 0
  • 寫在前面 本文轉(zhuǎn)自http://blog.csdn.net/jdsjlzx/article/details/506...
    mymdeep閱讀 2,859評(píng)論 6 21
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評(píng)論 25 709
  • 2017年7月29日 星期六 天氣陰 昨天培訓(xùn)結(jié)束,今早6點(diǎn)開始返程。 下午回去準(zhǔn)備解決大班額材料。 晚上準(zhǔn)備小...
    晨林夕閱讀 97評(píng)論 0 0

友情鏈接更多精彩內(nèi)容