chromium 的debug手段

  chromium代码量很大,要梳理流程如果直接扎进去看代码,估计会看的泪崩,当然大神级别的另当别论哈。我去看罗升阳罗老师的博客很详细也不算很深,但是是边看边忘,还是自己老老实实的跟代码,再做些笔记,毕竟好记性不如烂笔头。

  如下是 我在跟chromium过程中的一些手段:

1  Java代码

   1.1 log打印:

        使用org.chromium.base.log,用法和 android.util.Log一样  ;

   1.2 打印堆栈,打印出调用关系:

        Exception e = new Exception("for chromium java debug");
        e.printStackTrace();

  2  c++代码

     2.1 log打印:

          2.1.1   LOG(INFO) « “Found “«num_cookies«” cookies”,包含四种日志级别:FATAL,ERROR,WARNING,INFO。FATAL会

          2.1.2 包含头文件#include <android/log.h>,调用安卓log接口

                  #define BR_LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__) ;

      2.2 打印调用堆栈:

              在需要打印的文件中包含头文件#include "base/debug/stack_trace.h",

             在需要打印堆栈函数地方调用base::debug::StackTrace().Print();

             然后编译,抓取日志,从日志中应该可以抓到如下信息,将红线部分提取出来,就是我们需要的堆栈信息。

 

       通过安卓addr2line命令将堆栈信息转为调用关系,命令如下:

       ./third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-addr2line -e ./out/Default/lib.unstripped/libstandalonelibwebviewchromium.so addr1 addr2 ......(add1、addr2对应的是堆栈的地址);

      我写了个脚本,只要将堆栈地址拷贝到文件,执行脚本就可以进行转换。脚本已经上传到到百度网盘,有兴趣的小伙伴可以下载下来看看。脚本拷贝到src目录下。百度网盘路径如下,提取码是wbev,名字是trace2line.sh:

https://pan.baidu.com/s/1R4bEVm8YgPB8xNq1bwokPA

 

3  devtools调试

      webview apk中在oncreate 的时候创建了对象AwDevToolsServer,调用setRemoteDebuggingEnabled,开启aw_devtools_server。这样调试设备只要打开了usb调试、adb,打开webview apk运行时,就可以在电脑chrome上进行devtool调试。

      在电脑chrome中输入地址,跳转到如下界面,你设备上打开的页面就可以在这里调试:

显示点击Record,然后在你debug设备上加载URL,然后停止,应该就可以看到如下左侧跟右侧的界面,在左侧选择你需要追踪的,右侧点击鼠标左键,可以看到函数调用类似如下图,用来追踪流程也是很方便的。

   

 devtools工具对页面进行调试,可以统计各部分耗时便于性能优化,也有内存统计、分析工具便于内存的优化,此部

     分调试可参照如下地址;

         https://developers.google.com/web/tools/chrome-devtools

        https://blog.csdn.net/z_liny/article/details/79663645

     也可以通过trace进行流程跟踪, 这样比都不知道从哪儿添加日志或者堆栈更快入门。

4 通过GDB调试,GDB调试我没有在模拟器上试过,有兴趣的可以进行研究;

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值