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調試我沒有在模擬器上試過,有興趣的可以進行研究;

 

 

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