Systrace工具使用

環(huán)境準(zhǔn)備

Systrace.py的使用需要安裝python 2.7.16 ,不能用python 3.x

systrace.py 使用報(bào)錯(cuò)

  • systrace.py -l 報(bào)錯(cuò): ImportError: No module named win32con
    systrace_error.png
  • 安裝win32con模塊
    pip install pypiwin32
    pypiwin32.png
  • 如果pip版本過低則需要升級pip
    python -m pip install --upgrade pip
pip_update.png
  • python報(bào)錯(cuò): pImportError: No module named six.moves 重新安裝six模塊
    pip uninstall six
    pip install six
    O@JCUZ__52V2XSZUM{WI3CX.png
  • 再次驗(yàn)證systrace.py systrace.py -l
    systrace_suc.png

看到這里就表明systrace.py能使用了

命令用法

python systrace.py [options] [category1] [category2] ... [categoryN]

options

其中options可取值:

options 解釋
-o <FILE> 輸出的目標(biāo)文件
-t N, –time=N 執(zhí)行時(shí)間,默認(rèn)5s
-b N, –buf-size=N buffer大小(單位kB),用于限制trace總大小,默認(rèn)無上限
-k <KFUNCS>,–ktrace=<KFUNCS> 追蹤kernel函數(shù),用逗號分隔
-a <APP_NAME>,–app=<APP_NAME> 追蹤應(yīng)用包名,用逗號分隔
–from-file=<FROM_FILE> 從文件中創(chuàng)建互動的systrace
-e <DEVICE_SERIAL>,–serial=<DEVICE_SERIAL> 指定設(shè)備
-l, –list-categories 列舉可用的tags

category

category可取值:

category 解釋
gfx Graphics
input Input
view View System
webview WebView
wm Window Manager
am Activity Manager
sm Sync Manager
audio Audio
video Video
camera Camera
hal Hardware Modules
app Application
res Resource Loading
dalvik Dalvik VM
rs RenderScript
bionic Bionic C Library
power Power Management
sched CPU Scheduling
irq IRQ Events
freq CPU Frequency
idle CPU Idle
disk Disk I/O
mmc eMMC commands
load CPU Load
sync Synchronization
workq Kernel Workqueues
memreclaim Kernel Memory Reclaim
regulators Voltage and Current Regulators

示例

例如,在systrace.py所在目錄下執(zhí)行指令:

python systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq
./systrace.py -b 32768 -t 5 -o mytrace.html wm gfx input view sched freq //等價(jià)

又例如,輸出全部的trace信息

python systrace.py -b 32768 -t 5 -o mytrace.html gfx input view webview wm am sm audio video camera hal app res dalvik rs bionic power sched irq freq idle disk mmc load sync workq memreclaim regulators

注:收集trace,需要提前安裝python,并且一定要注意必須是python 2.x,而不是能3.x,否則可能會出現(xiàn)問題。另外,buffer大小不可過大,否則會出現(xiàn)oom異常。

  • 示例1
    systrace.py -t 10 -o d:/mytrace2.html wm gfx input view sched freq -a com.example.myapplication

如何分析systrace?

  1. 將chrome瀏覽器升級到版本 55.0.2883.75 (64-bit)
  2. 打開chrome瀏覽器,在地址欄輸入chrome://tracing/,然后點(diǎn)擊load,選取上述步驟中生成的html文件,正常情況下會看到如下圖所示界面

橫坐標(biāo)是以時(shí)間為單位,縱坐標(biāo)是以進(jìn)程-線程的方式來劃分,同一進(jìn)程的線程為一組放在一起,可收縮/展開,如下圖:

mytrace1.png

Frames

產(chǎn)生的html格式的trace文件必須使用Google Chrome打開,才能正確地解析并已圖標(biāo)形式展現(xiàn)。上圖中紅色圈起來的,都是可以點(diǎn)擊操作的地方,最上方是搜索欄,往下處是Alerts按鈕,再往下是鼠標(biāo)操作模式。

在每個(gè)app進(jìn)程,都有一個(gè)Frames行,正常情況以綠色的圓點(diǎn)表示。當(dāng)圓點(diǎn)顏色為黃色或者紅色時(shí),意味著這一幀超過16.6ms(即發(fā)現(xiàn)丟幀),這時(shí)需要通過放大那一幀進(jìn)一步分析問題。對于Android 5.0(API level 21)或者更高的設(shè)備,該問題主要聚焦在UI Thread和Render Thread這兩個(gè)線程當(dāng)中。對于更早的版本,則所有工作在UI Thread。

Alerts

Systrace能自動分析trace中的事件,并能自動高亮性能問題作為一個(gè)Alerts,建議調(diào)試人員下一步該怎么做。

比如對于丟幀是,點(diǎn)擊黃色或紅色的Frames圓點(diǎn)便會有相關(guān)的提示信息;另外,在systrace的最右上方,有一個(gè)Alerts tab可以展開,這里記錄著所有的的警告提示信息。

三、 快捷操作

導(dǎo)航操作

導(dǎo)航操作 作用
w 放大,[+shift]速度更快
s 縮小,[+shift]速度更快
a 左移,[+shift]速度更快
d 右移,[+shift]速度更快

快捷操作

常用操作 作用
f 放大當(dāng)前選定區(qū)域
m 標(biāo)記當(dāng)前選定區(qū)域
v 高亮VSync
g 切換是否顯示60hz的網(wǎng)格線
0 恢復(fù)trace到初始態(tài),這里是數(shù)字0而非字母o
一般操作 作用
h 切換是否顯示詳情
/ 搜索關(guān)鍵字
enter 顯示搜索結(jié)果,可通過← →定位搜索結(jié)果
` 顯示/隱藏腳本控制臺
? 顯示幫助功能

對于腳本控制臺,除了能當(dāng)做記事本的功能,目前還不清楚有啥功能,或許還在開發(fā)中。

模式切換

  1. Select mode: 雙擊已選定區(qū)能將所有相同的塊高亮選中;(對應(yīng)數(shù)字1)
  2. Pan mode: 拖動平移視圖(對應(yīng)數(shù)字2)
  3. Zoom mode:通過上/下拖動鼠標(biāo)來實(shí)現(xiàn)放大/縮小功能;(對應(yīng)數(shù)字3)
  4. Timing mode:拖動來創(chuàng)建或移除時(shí)間窗口線。(對應(yīng)數(shù)字4)
    可通過按數(shù)字1~4,用于切換鼠標(biāo)模式; 另外,按住alt鍵,再滾動鼠標(biāo)滾輪能實(shí)現(xiàn)放大/縮小功能。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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