精华内容
下载资源
问答
  • android 手机性能分析工具: 手机自带:traceview,ddms工具

    android 手机性能分析工具:


    手机自带:traceview,ddms工具

    展开全文
  • 如何编译? 在trace-cmd跟目录下执行:make... 将编译好的trace-cmd push到手机里面,查看trace-cmd使用方式,网上很多介绍,不多说. 如何解析生成的trace.dat文件? 在PC机器上面安装kenrelshark来解析,...
    如何编译?在trace-cmd跟目录下执行:make LDFLAGS=-static CC=arm-none-linux-gnueabi-gcc trace-cmd
    如何使用?将编译好的trace-cmd push到手机里面,查看trace-cmd使用方式,网上很多介绍,不多说.
    如何解析生成的trace.dat文件?在PC机器上面安装kenrelshark来解析,至于使用何种cmd来解析网络很多.
     
    trace-cmd-old 是什么?是之前网络上,网络上介绍很多
    trace-cmd-new是什么?linux kernel官方的,修改很多,而且与社区可以保持同步update
    how do trace-cmd-new download and update?
    具体下载可以参考我的github地址https://github.com/samarxie/trace-cmd

     

    展开全文
  • TraceView

    2019-03-10 16:39:57
    一、TraceView的用处 TraceView用于分析计算性能,流入某个方法过于耗时导致UI卡顿,或者某个方法调用次数过多,或者某个方法虽然并不占用太多内存但是占用了大量的CPU资源等等。 二、获取TraceView文件的三种方式...

    一、TraceView的用处
    TraceView用于分析计算性能,流入某个方法过于耗时导致UI卡顿,或者某个方法调用次数过多,或者某个方法虽然并不占用太多内存但是占用了大量的CPU资源等等。


    二、获取TraceView文件的三种方式
    1:方式一:通过代码获取

    case R.id.bt_trace_view:
        Debug.startMethodTracing("custom");
        startTrace();
        Debug.stopMethodTracing();
        Utils.showToast(this, "成功");
        break;

    a:在你想要检测的某段代码的开始位置调用

    Debug.startMethodTracing("custom");

    其中custom可根据需要自定义,其实就是生成的TraceView文件的文件名,例如custom.trace
    b:在你想要检测的某段代码的结束位置调用

    Debug.stopMethodTracing();

    结束检测没有参数。
    注意:这两行代码要在同一个线程成对出现。
    c:通过以上设置运行代码后就会在手机里生成/sdcard/custom.trace文件

    d:然后通过adb pull /sdcard/custom.trace D:\folder命令将custom.trace导出到指定目录。


    后面会着重讲打开.trace文件且分析.trace文件的方法。


    2:方式二:通过Android Studio的Monitor的CPU模块生成


    a:保持app在运行状态,在你要开始检测某个功能时点击一下按钮Start Method Tracing;
    b:根据需要操作一下app,再点击该按钮Stop Method Tracing,则检测区间结束,Studio会打开.trace文件的查看窗口,
        这个.trace文件在你app项目的captures目录下。
    c:这个窗口界面并不友好,也不好用,我们不直接观察这个界面,所以我们像方式一一样将这个.trace文件保存到某个目录。
        这里为了和上面的方式一统一,我也把这个文件保存到D:\folder,并且重命名为custom.trace文件。
    后面会着重讲打开.trace文件且分析.trace文件的方法。


    3:通过Tools --> Android --> Android Device Monitor获取

    a:通过Tools --> Android --> Android Device Monitor路径进入,然后参考下图开始分析;


    b:操作一会app后参考下图结束分析你刚才的操作执行的代码;


    c:分析完成后会打开.trace文件如下图,这个界面的底部的搜索功能不可用,而且我们经常需要搜索功能,所以我的习惯也是
        不采用这种方式产生的.trace文件。
        
    到此,三种获取.trace文件的方式讲完了,第一种方式和第二种方式我们都获取到了.trace文件,第三种方式我一般不采用。


    三:分析trace文件
    前面讲到的方式一方式二我们获取到了.trace,下面讲解如果打开并分析该.trace文件

    要打开.trace文件就用到了sdk目录下的D:\sdk\tools\traceview.bat工具,通过如下命令就打开.trace文件并进入分析界面

    由于通常我们的业务代码比较复杂,产生的.trace文件也很复杂不方便我们学习,所以这里我自己写一段非常简单的代码并通过前面方式一讲到的通过代码的方式获取.trace文件来讲解。

    private void test() {
        Debug.startMethodTracing("custom");
        startTrace();
        Debug.stopMethodTracing();
        Utils.showToast(this, "成功");
    }
    
    /**
     * jie1()和jie2()没有调用关系是兄弟关系
     */
    private void startTrace() {
        jie1();
        jie2();
    }
    
    /**
     * jie2()中两次调用jie3(),其中jie3(0)直接return,不产生递归也不会调用jie4()
     * jie3(3)会先调用一次jie4()再产生3次递归调用
     */
    private void jie2() {
        jie3(0);
        jie3(3);
    }
    
    private void jie3(int count) {
        if (count == 3) {
            jie4();
        }
        if (count == 0) {
            return;
        } else {
            jie3(count - 1);
        }
    }
    
    /**
     * 故意做比较耗时的操作:用于区分Excl和Incl的关系
     */
    private void jie4() {
        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {
                int k = i + j;
            }
        }
    }
    
    private void jie1() {
    
    }

    这段代码对应的.trace文件如下图


    其中各个字段的说明:
    Incl Cpu Time%
    Incl Cpu Time
    某函数占用的CPU时间,包含内部调用其它函数的CPU时间

    Excl Cpu Time%
    Excl Cpu Time
    某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间
    结论:父方法的Incl Cpu Time = 父方法的Excl Cpu Time + 子方法的Incl Cpu Time....  省略号说明一个方法可以调用多个方法

    Incl Real Time%
    Incl Real Time
    某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间

    Excl Real Time%
    Excl Real Time
    某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
    结论:父方法的Incl Real Time = 父方法的Excl Real Time + 子方法的Incl Real Time....省略号说明一个方法可以调用多个方法

    Call+Recur Calls/Total
    没展开某个方法时:
    会显示该方法被程序员主动调用次数,以及被自身递归调用次数;例如:2+3,程序员调用两次,自己递归调用3次
    展开某个方法时:
    父方法会显示:其调用(程序员主动调用,非递归)该方法的次数/该方法的总次数,例如:2/5,说明该方法总共被调用5次其中父方法主动调了他2次
    子方法会显示:子方法被其调用(程序员主动调用)的次数/子方法被调用的总次数,例如1/5
    注意:这里的程序员主动调用是指,你看到的代码调用了几次就是几次,并不包括代码运行中的递归
    例如

    funcA(){
    funcD();
    funcB();
    funcB();
    }
    这里程序员主动调用了两次funcB()一次funcD(),并没有管funcB()有没有递归的情况。
    再例如funcB(){
    funcB();
    funcB();
    }
    这里funcB()产生了递归,但是程序员在funcB()中只主动调用了2次funcB();不管funcB()递归了多少次。

    Cpu Time/Call
    某函数的Incl Cpu Time与调用次数的比。相当于该函数平均执行时间,注意不是Excl Cpu Time;

    Real Time/Call
    某函数的Incl Real Time与调用次数的比。相当于该函数平均执行时间,注意不是Excl Real Time;

    注意:这些列可以左右拖动调换位置

    定位问题时 TraceView 的使用方式:

     1)从上半部分查看哪些线程执行时间长?什么时候开始执行?与主线程交错时间?
     2)哪些方法的执行需要花费很长时间
            点击 TraceView 中的 Cpu Time/Call,按照占用 CPU 时间从高到低排序
     3)  哪些方法调用次数非常频繁
            点击 TraceView 中的 Calls + Recur Calls/Total ,按照调用次数从高到底排序

    排序后,然后逐个排查是否有项目代码或者依赖库代码,有的话点击查看详情,查看是这个方法还是调用的子方法的问题,进一步定位问题。

    展开全文
  • trace文件分析

    2014-04-08 18:26:53
    trace文件分析,对trace文件中的代码进行详细分析。
  • ollydbg Run trace

    2007-05-04 08:15:23
    ollydbg Run trace
  • traceview使用总结

    千次阅读 2019-08-17 17:16:04
    文章目录1.traceview的用途2.生成trace文件的三种方式(1)代码生成(2)使用android studio生成(3)DDMS生成3.使用traceview打开trace文件4.分析trace文件 1.traceview的用途 traceview是Android sdk中的一个...

    1.traceview的用途

    traceview是Android sdk中的一个工具,用于分析计算性能,跟踪方法耗时导致的卡顿问题。它将traceview文件转为图形,直观的反应出代码的执行时间、执行次数,便于我们分析。

    2.生成trace文件的三种方式

    trace文件是log文件的一种,可以通过代码,也可以使用Android studio生成。

    (1)代码生成
    //开始 trace,保存文件到 "/sdcard/homeFragment.trace"
    //高版本手机保存到"/sdcard/Android/data/packageName/files/homeFragment.trace"
    Debug.startMethodTracing("homeFragment");    
        // ...
    Debug.stopMethodTracing();    //结束
    

    导出trace文件到电脑:
    adb pull /sdcard/homeFragment.trace C:\Users\Admin\Desktop

    若提示No such file,可能保存到sdcard/android 目录下了:
    adb pull /sdcard/Android/data/packageName/files/homeFragment.trace C:\Users\Admin\Desktop
    packageName是应用的具体包名

    (2)使用android studio生成

    profile/cpu 下选择记录traceview
    cpu/traceview

    android studio对trace也做了可视化:包括各方法的执行时间和占比

    (3)DDMS生成

    DDSM 全称 Dalvik Debug Monitor Server,是老版adt的调试工具。可生成trace后,查看。
    在这里插入图片描述

    3.使用traceview打开trace文件

    新版Android stuido 中已移除了DDMS,这里我们使用traceview工具来查看trace文件信息。

    工具目录:androidsdk/tools/traceview.bat

    But,打开该目录后发现,新版sdk中已缺失traceview,我们可以下载一个traceview.bat文件放在该目录下,命令行打开:
    traceview C:\Users\Admin\Desktop\homeFragment.trace

    提示报错:

    SWT folder '' does not exist.
    Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
    

    这是依赖库缺失,下载一个老版的sdk/tools/lib,将它放到tools目录下(合并lib)即可。
    在这里插入图片描述

    虽然提示deprecated,还是可以打开traceview。

    4.分析trace文件

    1.打开如下:
    在这里插入图片描述

    • 上半部分展示了线程:
      • 不同颜色表示不同方法,颜色约长,执行时间越久。
    • 下半部分展示了方法的执行时间:
      • cpu time/call:该方法占用cpu的时间
      • Calls + Recur Calls/Total :调用、递归次数
      • Incl Cpu Time vs Excl Cpu Time:某方法占用的cpu时间,incl包含内部调用其他方法的时间,excl不包含

    2.定位问题

    • 查看耗时的方法:点击 cpu time/call ,按照时间倒序
    • 查看方法执行次数:点击 Calls + Recur Calls/Total,按照次数倒序

    排序后逐个排查项目代码,进一步定位问题

    3.案例
    项目在每次启动主页时,耗时在1.5-2.5s,优化性能时,我们需要具体查看:

    • 哪些方法耗时
      在这里插入图片描述
      结果:initView方法执行耗时,并将children方法列举出来,我们可以逐步排查优化

    • 哪些方法执行次数过多:
      在这里插入图片描述

    结果:shareUtilUser.getString方法高频执行,查看parents,发现是登录信息,频繁操作导致。跟踪代码,发现每次获取登录的某个信息,会将所有登录相关的数据,都取出来了,因此这里就是我们需要优化的地方了。

    PS:附上 traceview下载地址

    展开全文
  • TraceView 介绍

    2016-11-18 11:50:31
    TraceView 是 Android 平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到 method。详细内容参考:Profiling with Traceview and dmtracedump TraceView ...
  • 开启trace

    2011-03-18 13:31:00
    <br />1、手机端设置 a、用工程模式字串,开启工程模式 b、进入【设备】->【Set UART】->【uart setting】 c、设定 【TST-PS Config】 等于 【UART 1】,【PS Config】等于【无】,[TST-L1 ...
  • TraceView使用方法

    万次阅读 2011-10-09 22:40:17
    一、TraceView简介  TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。  TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。
  • Android 工具:TraceView

    2017-06-29 12:09:34
    一、TraceView工具 TraveView采集和分析方法的执行时间和数据,用于跟踪你的代码中的性能下降问题; 二、启动TraveView Android Studio->Tools->Android->Android Device Monitor->DDMS; 三、使用...
  • traceView使用

    2012-05-08 10:07:04
    一、TraceView简介  TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。  TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行说明。  Trace...
  • 微信小程序性能Trace工具_小程序性能Trace工具微信 Andoid 6.5.10 开始,我们提供了 Trace 导出工具,开发者可以在开发者工具 Trace Panel 中使用该功能。Trace工具使用方法PC 上需要先安装adb工具,可以参考一些...
  • TraceView的使用

    2015-05-04 16:52:08
    TraceView界面 现来看一下整个界面的图,整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值 上面一部分是你测试进程的中每个线程运行的...
  • TraceView总结

    万次阅读 2011-03-25 17:32:00
    一、TraceView简介  TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析。  TraceView是图形化的工具,最终它会产生一个图表,用于对性能分析进行...
  • TraceView 使用

    2017-05-02 15:47:28
    TraceView就是一个可以让我们简单的去寻找app中具体在哪里卡顿的一个非常方便的工具。 1.具体使用 (1)在代码中使用 首先我们要选中要调试的代码片段使用Debug.startMethodTracing(“DebugName”)来开启调试...
  • traceview.bat

    2019-03-31 10:49:53
    eclipse出现failed to get the required ADT version number from the SDK:....\tools\traceview.bat错误,并且无法打开SDK管理器,也不能连接手机
  • 浅析traceview

    2017-08-04 21:57:43
    DDMS/Devices选中测试进程,点击图标,操作手机,完成后再次点击图标,弹出下图TraceView界面 整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值...
  • sqltrace相关汇总

    2019-02-02 23:40:13
    启用或停止sqltrace: 打开sqltrace: echo 'execute function task("set sql tracing on", 5000,"4k","high","global")'|dbaccess sysadmin 关闭sqltrace: echo '...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,806
精华内容 7,922
关键字:

手机trace