Systrace和traceView

Systrace

命令用法
命令行

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

options

其中options可取值:

options 解釋
-o <FILE> 輸出的目標文件
-t N, –time=N 執(zhí)行時間烫葬,默認5s
-b N, –buf-size=N buffer大薪缁 (單位kB),用于限制trace總大小凡蜻,默認無上限
-k <KFUNCS>,–ktrace=<KFUNCS> 追蹤kernel函數(shù)垢箕,用逗號分隔
-a <APP_NAME>,–app=<APP_NAME> 追蹤應用包名划栓,用逗號分隔
–from-file=<FROM_FILE> 從文件中創(chuàng)建互動的systrace
-e <DEVICE_SERIAL>,–serial=<DEVICE_SERIAL> 指定設備
-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 //等價

又例如条获,輸出全部的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異常。

Frames

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

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

Alerts

Systrace能自動分析trace中的事件场靴,并能自動高亮性能問題作為一個Alerts港准,建議調試人員下一步該怎么做票罐。

比如對于丟幀是,點擊黃色或紅色的Frames圓點便會有相關的提示信息疗杉;另外,在systrace的最右上方烟具,有一個Alerts tab可以展開奠蹬,這里記錄著所有的的警告提示信息。

注:本文講到最新版的systrace囤躁,其中sdk 23狸演,chrome版本49.0言蛇,部分功能在老版本systrace并沒有腊尚。

快捷操作

導航操作

導航操作 作用
w 放大满哪,[+shift]速度更快
s 縮小,[+shift]速度更快
a 左移哨鸭,[+shift]速度更快
d 右移,[+shift]速度更快

快捷操作

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

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

模式切換

  1. Select mode: 雙擊已選定區(qū)能將所有相同的塊高亮選中石洗;(對應數(shù)字1)
  2. Pan mode: 拖動平移視圖(對應數(shù)字2)
  3. Zoom mode:通過上/下拖動鼠標來實現(xiàn)放大/縮小功能;(對應數(shù)字3)
  4. Timing mode:拖動來創(chuàng)建或移除時間窗口線缕棵。(對應數(shù)字4)

可通過按數(shù)字1~4涉兽,用于切換鼠標模式; 另外别厘,按住alt鍵拥诡,再滾動鼠標滾輪能實現(xiàn)放大/縮小功能。

traceView

Traceview

方法1代碼實現(xiàn):

Debug.startMethodTracing("demo");
Debug.stopMethodTracing();

定位準確
生成位置:
/sdcard/Android/data/packageName/files

方法2--DDMS:

WechatIMG673.jpeg

選中進程,點擊開始記錄,再次點擊結束,
通過DDMS記錄,不容定位開始和結束的代碼位置;
視圖
屏幕快照 2020-05-27 上午11.06.09.png

參數(shù)說明:

  1. Name: 該線程運行過程中所調用的函數(shù)名
  2. Incl Cpu Time: 某函數(shù)占用的CPU時間雕蔽,包含內部調用其它函數(shù)的CPU時間
  3. Excl Cpu Time: 某函數(shù)占用的CPU時間宾娜,但不含內部調用其它函數(shù)所占用的CPU時間
  4. Incl Real Time: 某函數(shù)運行的真實時間(以毫秒為單位)扇售,內含調用其它函數(shù)所占用的真實時間
  5. Excl Real Time: 某函數(shù)運行的真實時間(以毫秒為單位),不含調用其它函數(shù)所占用的真實時間
  6. Call+Recur Calls/Total: 某函數(shù)被調用次數(shù)以及遞歸調用占總調用次數(shù)的百分比
  7. Cpu Time/Call: 某函數(shù)調用CPU時間(Incl Cpu time)與調用次數(shù)的比华弓,等價于該函數(shù)平均執(zhí)行時長困乒。
  8. Real Time/Call: 某函數(shù)調用CPU時間(Incl Real time)與調用次數(shù)的比。等價于該函數(shù)平均真實時長

重點關注項:

  • Cpu Time/Call 函數(shù)平均執(zhí)行時間較長的函數(shù)迁霎;
  • Call+Recur Calls/Total百宇,調用次數(shù)非常頻繁的函數(shù)。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末昌粤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涮坐,更是在濱河造成了極大的恐慌,老刑警劉巖疲扎,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廓译,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓜挽,警方通過查閱死者的電腦和手機征绸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淆衷,“玉大人渤弛,你說我怎么就攤上這事∷希” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵康嘉,是天一觀的道長籽前。 經(jīng)常有香客問我,道長肄梨,這世上最難降的妖魔是什么膘格? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮纱控,結果婚禮上,老公的妹妹穿的比我還像新娘甜害。我一直安慰自己,他們只是感情好眨攘,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布嚣州。 她就那樣靜靜地躺著,像睡著了一般情竹。 火紅的嫁衣襯著肌膚如雪匀哄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天阱州,我揣著相機與錄音法梯,去河邊找鬼。 笑死立哑,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播木蹬,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镊叁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晦譬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤卧土,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旅敷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颤霎,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年晴音,在試婚紗的時候發(fā)現(xiàn)自己被綠了缔杉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡进苍,死狀恐怖鸭叙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情沈贝,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布嗡善,位于F島的核電站学歧,受9級特大地震影響,放射性物質發(fā)生泄漏枝笨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一剔桨、第九天 我趴在偏房一處隱蔽的房頂上張望徙融。 院中可真熱鬧,春花似錦、人聲如沸萨脑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛛芥。三九已至军援,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胸哥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工庐船, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘲更,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓篓冲,卻偏偏與公主長得像宠哄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子毛嫉,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354