淺談調研app的方法

在實際的工作中,我們可能會對三方的app進行性能分析,那么一般都可以從哪些方面觀看一個app呢?

可以從以下幾個方面審視:

  • 使用top命令查看整體信息
  • 使用ps查看所有相關的線程
  • 使用用bugreport查看相關的堆棧信息
  • 分析重點so庫
  • 分析log

下面以51cto為例,來看一看具體的評估方法

使用top命令查看整體信息

進程信息課題通過top命令查看

top -n 1

命令的結果如下


image.png

從top命令中,我們可以看到51cto的進程和使用cpu的情況,進程號為13548,大概占cpu45.1%

使用ps查看所有相關的線程

那么51cto都有哪些線程呢?
我們可以通過ps命令查看

ps -ef -o pid,tid,user,pr,ni,%cpu,s,virt,res,pcy,cmd,name | sort -r -k 6 -n | grep "cto51" | head -20

命令的結果如下


image.png

從這里我們可以看到51cto主要有哪些線程,并且我們隊%cpu(第6列)進行排序
我們可以清晰的看出,主線程是最占用cpu的,大概占用了17.8%
其次是線程14785,線程名是ExoPlayerImplIn,顯然是通過exoplayer進行播放的
接下來是音視頻的兩個MediaCodec_loop

使用用bugreport查看相關的堆棧信息

下面我們通過bugreport看一看相關的堆棧

adb bugreport

當然了,對于第三方的app,我們能看到的堆棧信息是比較有限的
這個命令捕捉的信息量非常大,我們只關注堆棧部分


image.png

可以通過pid找到相應的堆棧,這里可以看出進程名,和使用的so庫
下面依次看看重點的線程

首先是主線程13548

image.png

這里只能看出是一個looper,看不出其他什么信息
線程14785
image.png

這是一個native的handler,目前也看不出執(zhí)行什么
當然,由于權限的問題,有時看不出具體的調用方式

分析重點so庫

比如上面我們看到了有l(wèi)ibjiagu.so
我們可以用以下方法查看so的接口

readelf -s libjiagu.so

結果如下


image.png

這里需要我們自己進行進一步的篩選

分析log

最后一步就是查看相關的log了,我們可以分線程看log
比如14785線程


image.png

從log信息可以看出,是音頻相關的線程

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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