1. 程式人生 > >Android抓取各種log的方法

Android抓取各種log的方法

在分析app 時,我們通常需要分析app 的java heap 資料,如分析java 的memory leak, 追查heap
中相關變數情況等。
在android 中抓取app 的hprof 操作方式有下面幾種:
第一種方式: 使用am 命令
   adb shell am dumpheap {Process} file
   如 adb shell am dumpheap com.android.phone /data/anr/phone.hprof
   adb pull /data/anr/phone.hprof
第二種方式: 使用DDMS 命令
   在DDMS 中選擇對應的process, 然後在Devices 按鈕欄中選擇Dump Hprof file, 儲存即可
第三種方式: 通過程式碼的方式
   在android.os.Debug 這個class 中有定義相關的抓取hprof 的method.
如: public static void dumpHprofData(String fileName) throws IOException;
這樣即可在程式碼中直接將這個process 的hprof 儲存到相對應的檔案中,注意這個只能抓取當時的
process.
如果想抓其他的process 的hprof, 那麼就必須通過AMS 幫忙了。
可以先獲取IActivityManager 介面,然後呼叫它的dumpheap 方法。具體的程式碼,大家可以參考
frameworks/base/cmds/am/src/com/android/commands/am/am.java 中的呼叫程式碼
抓取回hprof 後,就可以用hprof-conv 命令將DVM 格式的hprof 轉換成標準的java 命令的hprof
   hprof-conv in.hprof out.hprof
然後使用如MAT 之類的工具進行具體的分析

相關推薦

Android各種log方法

在分析app 時,我們通常需要分析app 的java heap 資料,如分析java 的memory leak, 追查heap 中相關變數情況等。 在android 中抓取app 的hprof 操作方式有下面幾種: 第一種方式: 使用am 命令    adb shell am dumpheap {Proces

Android不同層級Log的方式

int main(int argc, char *argv[]) { …… //抓取main log char path[] = "/xxx/xxx/app_main.log"; sprintf(cmd,"logcat -v time > %s",path); f

使用WinPcap各種

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

手機軟體測試如何使用adb命令手機Log

一般使用adb命令抓取手機的Log都是AP側的log,手機測試業內人士應該瞭解。 主要是 4中常見的log 1、radio log 2、main log 3、event log 4、kernel log 下面我們一一來介紹 1、radio log—— 通話、語音方面的lo

NodeJs頁面html()方法亂碼

在如何用Nodejs分析一個簡單頁面一文中,我們爬取了部落格園首頁的 20 篇文章標題,輸出部分拼接了一個字串: var $ = cheerio.load(sres.text); var ans = ''; $('.titlelnk').each(function (ind

友盟crash Log- 解析IOS崩潰日誌

http://blog.csdn.net/xyxjn/article/details/43310061 http://blog.csdn.net/smking/article/details/9342899 最近在解析ume

android 完整的log的方式

log 分為 kernel ,  main, events ,radio 幾種log kernel屬於 linux核心的log ,通過讀取 /proc/kmsg  或者通過串列埠來抓取。 USB連線手機抓取方式:            adb shell cat 

[FAQ03891] 如何在User版本開啟串列埠(Uart),上層Log,開啟輸入控制檯

FAQ Content [Description] 如何在User版本開啟串列埠(Uart),開啟輸入控制檯,抓取上層Log   [Keyword] User Uart Log Logcat 輸入 控制檯 串列埠   [Solution] (1) 如何在User版本中使用串

Fiddler不能Chrome解決方法

Fiddler是一個http協議除錯代理工具,它能夠記錄並檢查所有你的電腦和網際網路之間的http通訊,設定斷點,檢視所有的“進出”Fiddler的資料(指cookie,html,js,css等檔案,這些都可以讓你胡亂修改的意思)。 Fiddler 要比其他的網

ABAP異常的方法:try,endtry

PARAMETERS number TYPE i.DATA result TYPE p DECIMALS 2.DATA oref TYPE REF TO cx_root.DATA text TYPE string. START-OF-SELECTION.   TRY.       IF ABS( number

高通平臺如何offline systrace log

Most kernel modules have tracing configuration, customer can switch on/off tracing event accordingly. For example, if you only care about bus vote, followi

Android崩潰日誌

在Android裡如果執行時出現異常,而開發者又沒有手動去catch的話,程式就會崩潰; 在IDE上進行除錯的時候,錯誤資訊會第一時間顯示在logcat裡,可以很方便的檢視崩潰資訊,找出錯誤; 但是如果程式在非除錯階段崩潰的話,logcat就

Logandroid手機除錯AP側(main、kernel)、BP側和ANR、hcidump的log方法

AP的log抓取   主要有main log和kernel log兩種。 1、Main log   註釋:     Main log為應用程式的log,也是最常用的一種。提交功能性bug時,一般都要提供Main log。   方法1:     在手機後臺裡開一個程

android實用方法----程式碼中log

最近在公司中遇到一個需求,客戶的手機出現bug但是我們復現不出來,所以我們主管讓我寫個抓log的apk。 思路很簡單,開啟一個服務,然後用Runtime.getRuntime().exec(String [] cmdArray);方法呼叫命令列執行adb命令就

Android】adb不同分類Log(kernel、radio、event、main)和獲取ANR log

Log分類     Android日誌主要分為kernel、radio、event、main這四種log。 Kernel Log     kernel log屬於Linux核心的log ,可以通過讀取/proc/kmsg或者通過串列埠來抓取。     adb 抓取ke

Android Log、USER 版本與ENG 版本差異、mtKUser版本開啟串列埠輸入

部分轉自:http://blog.csdn.net/yaoming168/article/details/38777727 其餘摘錄自MTK官方解釋 一、Android log框架簡介 二、log獲取方式 1、Eclipse 抓取 1)根據資訊型別過濾

展訊平臺uart log工具SecureCRT配置方法

首先安裝SecureCRT軟體和相對應的工具,之後開啟SecureCRT,點選file-->Quick Connect 相關設定項如下: Protocol 為Serial Port 為計算機中的埠:這裡是COM23 Baud rate 要選為115200 Data b

EasyDarwin相關Android安卓客戶端EasyPusher/EasyPlayer/EasyCamera/EasyClient在無開發環境進行log

1.抓Android logcat工具 在EasyDarwin Github Tool專案(https://github.com/EasyDarwin/Tools)下載Android adb Logcat工具windows版本: 2.開啟Android手

android 開發--網頁解析網頁內容的若干方法(網路爬蟲)(正則表示式)

網頁有兩種格式,一種是xml另一種是html,目前似乎好像大部分都是html格式的,檢視網頁格式的方法是在瀏覽器中右鍵-->檢視原始碼 一,XML解析的三大方法 (1) SAX: Simple API for XML SAX是一個解析速度快並且佔用記憶體少的XML解析

關於adb 命令android kernel的log資訊

檢視android的kernel 的log的命令: 首先,切換root使用者(這點很重要,不然會出現許可權問題無法訪問,這也是我寫這篇blog的目的) adb root; 然後執行adb shell dmesg >dmesg.log 最後開啟ged