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();

   1.3 调用跟踪:

         TraceEvent.begin/TraceEvent.end

  2  c++代码

     2.1 log打印:

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

                    在日志输出后自动引发一个crash;

         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_tools/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对应的是堆栈的地址);

    如下是我根据堆栈信息,获取的函数调用关系。

3  devtools调试

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

     分调试可参照如下地址;

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

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

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章