




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Android開發(fā)android調(diào)試工具集【轉(zhuǎn)】2010-08-11 09:54 by HalZhang, 285 visits, 網(wǎng)摘, 收藏, 編輯 1. 查看當(dāng)前堆棧1) 功能:在程序中加入代碼,使可以在logcat中看到打印出的當(dāng)前函數(shù)調(diào)用關(guān)系2) 方法: new Exception(“print trace”).printStackTrace();2. MethodTracing1) 功能:用于熱點(diǎn)分析和性能優(yōu)化,分析每個函數(shù)占用的CPU時間,調(diào)用次數(shù),函數(shù)調(diào)用關(guān)系等2) 方法:a) 在程序代碼中加入追蹤開關(guān) 1: 2: 3:/ 先建/data/tmp目錄 4: / 被追蹤的程序段
2、5:b) 編譯,運(yùn)行后,設(shè)備端生成/data/tmp/test.trace文件c) 把trace文件復(fù)制到PC端 $ adb pull /data/tmp/test.trace ./d) 使用android自帶工具分析trace文件 $ $ANDROID_SRC/out/host/linux-x86/bin/traceview test.trace 此時可看到各個函數(shù)被調(diào)用的次數(shù)CPU占用率等信息e) 使用android自帶工具分析生成調(diào)用關(guān)系類圖 $ apt-get install graphviz # 安裝圖片相關(guān)軟件 $ANDROID_SRC/out/host/linux-x86/bin
3、/dmtracedump -g test.png test.trace 此時目錄下生成類圖test.png3) 注意 trace文件生成與libdvm模塊DEBUG版本相沖突,所以此方法只適用于對非DEBUG版本模擬器的調(diào)試,否則在分析trace文件時會報錯3. HProf (Heap Profile)1) 功能: 用于java層面的內(nèi)存分析,顯示詳細(xì)的內(nèi)存占用信息,指出可疑的內(nèi)存泄漏對象2) 方法:a) 在代碼中加入dump動作 1: 2: 3: 4: try 5:/ 先建/data/tmp目錄 6: catch (IOException ioe) 7: b) 把hprof文件復(fù)制到PC端
4、$ adb pull /data/tmp/input.hprof ./c) 使用命令hprof-conv把hprof轉(zhuǎn)成MAT識別的標(biāo)準(zhǔn)的hprof $ $ANDROID_SRC/out/host/linux-x86/bin/hprof-conv input.hprof output.hprofd) 使用工具看hprof信息 下載MAT工具: 用工具打開output.hprof3) 注意:此工具只能顯示java層面的,而不能顯示層的內(nèi)存占用信息4. SamplingProfile (android 2.0上版本使用)1) 功能 每隔毫秒對當(dāng)前正在運(yùn)行的函數(shù)取樣,并輸出到log中2) 在代碼中加
5、入取樣設(shè)定 1: 2: 3: SamplingProfile sp = SamplingProfiler.getInstance(); 4: sp.start(n); / n為設(shè)定每秒采樣次數(shù) 5: sp.logSnapshot(sp.snapshot(); 6: 7: sp.shutDown();它會啟一個線程監(jiān)測,在logcat中打印信息5. 用發(fā)系統(tǒng)信號的方式取當(dāng)前堆棧情況和內(nèi)存信息1) 原理 dalvik虛擬機(jī)對SIGQUIT和SIGUSR1信號進(jìn)行處理(dalvik/vm/SignalCatcher.c),分別完成取當(dāng)前堆棧和取當(dāng)前內(nèi)存情況的功能2) 用法a) $ chmod 777
6、 /data/anr -R # 把a(bǔ)nr目錄權(quán)限設(shè)為可寫 $ rm /data/anr/traces.txt # 刪除之前的trace信息 $ ps # 找到進(jìn)程號 $ kill -3 進(jìn)程號 # 發(fā)送SIGQUIT信號給該進(jìn)程,此時生成trace信息 $ cat /data/anr/traces.txt 功能實(shí)現(xiàn):遍歷thread list(dalvik/vm/Thread.c:dvmDumpAllThreadEx(),并打印當(dāng)前函數(shù)調(diào)用關(guān)系(dalvik/vm/interp/Stack.c:dumpFrames()b) $ chmod 777 /data/misc -R $ ps # 找到
7、進(jìn)程號 $ kill -10 進(jìn)程號 # 發(fā)送SIGQUIT信事信號給該進(jìn)程,此時生成hprof信息 $ ls /data/misc/*.hprof 此時生成hprf文件,如何使用此文件,見第二部分(HProf) 注意:hprof文件都很大,注意用完馬上刪除,以免占滿存儲器6. logcat及原理2) dalvik利用管道加線程的方式,先利用dup2把stdout和stderr重定向到管理中(vm/StdioConverter.c:dvmstdioConverterStartup),然后再啟動一個線程從管道另一端讀出內(nèi)容(dalvik/vm/StdioConverter.c:stdioconv
8、erterThreadStart(),使用LOG公共工具(system/core/liblog/logd_write.c: _android_log_print())輸出到/dev/log/*中去3) logcat通過加不同參數(shù)看/dev/log/下的不同輸入信息 # logcat -b main 顯示主緩沖區(qū)中的信息 # logcat -b radio 顯示無線緩沖區(qū)中的信息 # logcat -b events 顯示事件緩沖區(qū)中的信息7. jdwp(java debug wire protocol)及原理1) 虛擬機(jī)(設(shè)備端)在啟動時加載了Agent JDWP 從而具備了調(diào)試功能。在調(diào)試器
9、端(PC端)通過JDWP協(xié)議與設(shè)備連接,通過發(fā)送命令來獲取的狀態(tài)和控制Java程序的執(zhí)行。JDWP 是通過命令(command)和回復(fù)(reply)進(jìn)行通信的。2) JDK 中調(diào)試工具 jdb 就是一個調(diào)試器,DDMS也提供調(diào)試器與設(shè)備相連。3) dalvik為JDWP提供了兩種連接方式:tcp方式和adb方式,tcp方式可以手工指定端口,adb方式自動設(shè)定為8700端口,通常使用DDMS調(diào)試就是通過adb方式8. monkey1) monkey是一個android自帶的命令行工具。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試。2) 方法 在設(shè)備端打開setting界面 此時可以看到界面不斷被切換9. 其它小工具1) 取毫微秒級的時間,用于計算時間 threadCpuTimeNanos()2) 統(tǒng)計兩點(diǎn)間的內(nèi)存分配情況 startAllocCounting() stopAllocCounting() getGlobalAllocCount() get.3) 打印當(dāng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院《中學(xué)生物課堂教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華立科技職業(yè)學(xué)院《數(shù)據(jù)挖掘與決策管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波衛(wèi)生職業(yè)技術(shù)學(xué)院《界面化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 宜春學(xué)院《需求工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿州職業(yè)技術(shù)學(xué)院《水質(zhì)工程學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州經(jīng)貿(mào)學(xué)院《小學(xué)教學(xué)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西管理職業(yè)學(xué)院《活動策劃與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 電子科技大學(xué)中山學(xué)院《信息技術(shù)基礎(chǔ)及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥師范學(xué)院《材料與工藝(陶瓷)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島職業(yè)技術(shù)學(xué)院《金屬材料及熱處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 六年級下冊語文第一單元測試卷 部編版(含答案)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫新版
- 《研學(xué)旅行市場營銷》課件-研學(xué)旅行市場營銷之社群營銷
- clsim100-32藥敏試驗(yàn)標(biāo)準(zhǔn)2023中文版
- LNG加氣站質(zhì)量管理手冊
- 艱難梭菌感染動物模型的建立及其應(yīng)用評價
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計規(guī)范
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫附帶答案詳解
- 《旅游景點(diǎn)云南》課件2
- 《肺癌課件:基本概念與臨床表現(xiàn)》
- 《斯特魯普效應(yīng)》課件
評論
0/150
提交評論