trace android,Android atrace使用说明(Android sdk中的systrace)

1. 普通使用

atrace -a com.jeoe.ebox gfx wm am sched view app res ss

1

atrace-acom.jeoe.eboxgfxwmamschedviewappresss

这样会把结果输出到控制台,对分析没什么意义,可以用于测试这个命令

2. 抓trace并保存到文件

atrace -a com.jeoe.ebox gfx wm am sched view app res ss -o /sdcard/a.trace

1

atrace-acom.jeoe.eboxgfxwmamschedviewappresss-o/sdcard/a.trace

这样会把分析文件输出到/sdcard/a.trace文件

将a.trace文件导出到电脑,然后使用sdk下的systrace.py程序将分析结果生成html文件,命令如下:

python systrace.py --from-file ~/a.trace -o ~/a.htm

1

pythonsystrace.py--from-file~/a.trace-o~/a.htm

–from-file 参数表明从文件读入分析数据

~/a.trace 源数据文件

-o ~/a.html 指定输出文件路径

3. 循环抓取

4. atrace帮助内容

Shell

usage: atrace [options] [categories...]

options include:

-a appname enable app-level tracing for a comma separated list of cmdlines

-b N use a trace buffer size of N KB

-c trace into a circular buffer

-f filename use the categories written in a file as space-separated

values in a line

-k fname,... trace the listed kernel functions

-n ignore signals

-s N sleep for N seconds before tracing [default 0]

-t N trace for N seconds [default 5]

-z compress the trace dump

--async_start start circular trace and return immediately

--async_dump dump the current contents of circular trace buffer

--async_stop stop tracing and dump the current contents of circular

trace buffer

--stream stream trace to stdout as it enters the trace buffer

Note: this can take significant CPU time, and is best

used for measuring things that are not affected by

CPU performance, like pagecache usage.

--list_categories

list the available tracing categories

-o filename write the trace to the specified file instead

of stdout.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

usage:atrace[options][categories...]

optionsinclude:

-aappnameenableapp-leveltracingforacommaseparatedlistofcmdlines

-bNuseatracebuffersizeofNKB

-ctraceintoacircularbuffer

-ffilenameusethecategorieswritteninafileasspace-separated

valuesinaline

-kfname,...tracethelistedkernelfunctions

-nignoresignals

-sNsleepforNsecondsbeforetracing[default0]

-tNtraceforNseconds[default5]

-zcompressthetracedump

--async_startstartcirculartraceandreturnimmediately

--async_dumpdumpthecurrentcontentsofcirculartracebuffer

--async_stopstoptracinganddumpthecurrentcontentsofcircular

tracebuffer

--streamstreamtracetostdoutasitentersthetracebuffer

Note:thiscantakesignificantCPUtime,andisbest

usedformeasuringthingsthatarenotaffectedby

CPUperformance,likepagecacheusage.

--list_categories

listtheavailabletracingcategories

-ofilenamewritethetracetothespecifiedfileinstead

ofstdout.

5. 允许的categories

执行下面命令可以看到atrace允许追踪的category

atrace --list_categories

1

atrace--list_categories

下面是笔者附上来的列表

Shell

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

pm - Package Manager

ss - System Server

database - Database

network - Network

adb - ADB

pdx - PDX services

sched - CPU Scheduling

irq - IRQ Events

i2c - I2C Events

freq - CPU Frequency

idle - CPU Idle

disk - Disk I/O

mmc - eMMC commands

workq - Kernel Workqueues

regulators - Voltage and Current Regulators

binder_driver - Binder Kernel driver

binder_lock - Binder global lock trace

pagecache - Page cache

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

gfx-Graphics

input-Input

view-ViewSystem

webview-WebView

wm-WindowManager

am-ActivityManager

sm-SyncManager

audio-Audio

video-Video

camera-Camera

hal-HardwareModules

app-Application

res-ResourceLoading

dalvik-DalvikVM

rs-RenderScript

bionic-BionicCLibrary

power-PowerManagement

pm-PackageManager

ss-SystemServer

database-Database

network-Network

adb-ADB

pdx-PDXservices

sched-CPUScheduling

irq-IRQEvents

i2c-I2CEvents

freq-CPUFrequency

idle-CPUIdle

disk-DiskI/O

mmc-eMMCcommands

workq-KernelWorkqueues

regulators-VoltageandCurrentRegulators

binder_driver-BinderKerneldriver

binder_lock-Bindergloballocktrace

pagecache-Pagecache

6. 在自己的程序中加入trace代码

系统版本大于等于Android 4.3 (API18)以上的才可以用

Java

import android.content.Intent

import android.os.Build

import androidx.appcompat.app.AppCompatActivity

import android.os.Bundle

import android.os.Trace

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {

Trace.beginSection("aaabbbcccddd")

};

//*************您的代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {

Trace.endSection();

};

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

importandroid.content.Intent

importandroid.os.Build

importandroidx.appcompat.app.AppCompatActivity

importandroid.os.Bundle

importandroid.os.Trace

classMainActivity:AppCompatActivity(){

overridefunonCreate(savedInstanceState:Bundle?){

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR2){

Trace.beginSection("aaabbbcccddd")

};

//*************您的代码

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR2){

Trace.endSection();

};

}

}

打赏

f69872ab5631b766bfb8c62b6b7d28fa.png微信扫一扫,打赏作者吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值