android調(diào)試工具集_第1頁
android調(diào)試工具集_第2頁
android調(diào)試工具集_第3頁
android調(diào)試工具集_第4頁
android調(diào)試工具集_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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) 功能:用于熱點分析和性能優(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) 編譯,運行后,設(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)存分析,顯示詳細的內(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識別的標準的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)前正在運行的函數(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虛擬機對SIGQUIT和SIGUSR1信號進行處理(dalvik/vm/SignalCatcher.c),分別完成取當(dāng)前堆棧和取當(dāng)前內(nèi)存情況的功能2) 用法a) $ chmod 777

6、 /data/anr -R # 把anr目錄權(quán)限設(shè)為可寫 $ rm /data/anr/traces.txt # 刪除之前的trace信息 $ ps # 找到進程號 $ kill -3 進程號 # 發(fā)送SIGQUIT信號給該進程,此時生成trace信息 $ cat /data/anr/traces.txt 功能實現(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、進程號 $ kill -10 進程號 # 發(fā)送SIGQUIT信事信號給該進程,此時生成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) 虛擬機(設(shè)備端)在啟動時加載了Agent JDWP 從而具備了調(diào)試功能。在調(diào)試器

9、端(PC端)通過JDWP協(xié)議與設(shè)備連接,通過發(fā)送命令來獲取的狀態(tài)和控制Java程序的執(zhí)行。JDWP 是通過命令(command)和回復(fù)(reply)進行通信的。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ā)送偽隨機的用戶事件流,實現(xiàn)對正在開發(fā)的應(yīng)用程序進行壓力測試。2) 方法 在設(shè)備端打開setting界面 此時可以看到界面不斷被切換9. 其它小工具1) 取毫微秒級的時間,用于計算時間 threadCpuTimeNanos()2) 統(tǒng)計兩點間的內(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論