代码里添加systrace跟踪(三)

无论在哪层,都需要TAGJAVA层的TAGTrace.java里定义:

29 public final class Trace {

 30    // These tags must be kept in sync withframeworks/native/include/utils/Trace.h.

 31    public static final long TRACE_TAG_NEVER = 0;

 32    public static final long TRACE_TAG_ALWAYS = 1L << 0;

 33    public static final long TRACE_TAG_GRAPHICS = 1L << 1;

 34    public static final long TRACE_TAG_INPUT = 1L << 2;

 35    public static final long TRACE_TAG_VIEW = 1L << 3;

 36    public static final long TRACE_TAG_WEBVIEW = 1L << 4;

 37    public static final long TRACE_TAG_WINDOW_MANAGER = 1L << 5;

 38    public static final long TRACE_TAG_ACTIVITY_MANAGER = 1L << 6;

 39    public static final long TRACE_TAG_SYNC_MANAGER = 1L << 7;

 40    public static final long TRACE_TAG_AUDIO = 1L << 8;

 41    public static final long TRACE_TAG_VIDEO = 1L << 9;

 42

 43    public static final int TRACE_FLAGS_START_BIT = 1;

 44    public static final String[] TRACE_TAGS = {

 45        "Graphics", "Input", "View","WebView", "Window Manager",

 46        "Activity Manager", "Sync Manager","Audio", "Video",

 47    };

         NativeTAG定义在Trace.h里面:

43 #define ATRACE_TAG_NEVER            0       // The "never" tag is neverenabled.

 44#define ATRACE_TAG_ALWAYS          (1<<0)  // The"always" tag is always enabled.

 45#define ATRACE_TAG_GRAPHICS        (1<<1)

 46#define ATRACE_TAG_INPUT           (1<<2)

 47#define ATRACE_TAG_VIEW             (1<<3)

 48#define ATRACE_TAG_WEBVIEW         (1<<4)

 49#define ATRACE_TAG_WINDOW_MANAGER  (1<<5)

 50#define ATRACE_TAG_ACTIVITY_MANAGER (1<<6)

 51#define ATRACE_TAG_SYNC_MANAGER    (1<<7)

 52#define ATRACE_TAG_AUDIO           (1<<8)

 53#define ATRACE_TAG_VIDEO           (1<<9)

 54#define ATRACE_TAG_LAST            ATRACE_TAG_VIDEO

TAG的值都是一样的,只是对于不同代码层,都进行了定义。

         java层代码了,比如ViewRootImplementation.java里追踪performTraversals

1132            Trace.traceBegin(Trace.TRACE_TAG_VIEW, "performTraversals");

1133             try {

1134                 performTraversals();

1135             } finally {

1136                Trace.traceEnd(Trace.TRACE_TAG_VIEW);

1137             }

         native层代码了,比如Surfaceflinger.cpp里追踪handleRepaint

917 void SurfaceFlinger::handleRepaint()

 918{

 919    ATRACE_CALL();

当然,要在代码的开始处定义TAG,在Surfaceflinger.cpp文件开头,有如下定义:

#define ATRACE_TAG ATRACE_TAG_GRAPHICS

而且使用ATRACE_CALL(),为了跟踪函数的时间准确,最好在函数的开头使用。

   native层里,还可以跟踪数值的变化,如InputDispatcher.cpp里跟踪触屏滑动xy轴的值:

2513        ATRACE_INT("INPUT_DISPATCHER_X",args->pointerCoords[i].                                    getAxisValue(AMOTION_EVENT_AXIS_X));

2514        ATRACE_INT("INPUT_DISPATCHER_Y",args->pointerCoords[i].                                    getAxisValue(AMOTION_EVENT_AXIS_Y));

2515    }

         如果有需要,我们可以再自己的代码热点添加自己的追踪函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值