zoukankan      html  css  js  c++  java
  • 如何简单快速调试高大上的谷歌浏览器

    上一篇我们简单的将了在Ubuntu上编译chromium,android content_shell_apk的编译,一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西,作为一个开发者我们应带着探索的精神,都说它稳定,速度快。它为什么这么快、稳定? 带着这一系列的问题,我们去学习理解它,去搞明白它的原理、架构。

    所以...... 

    一切精妙的东西最终又归结到源码上,直到我们了解它熟悉它。怎么快速的的了解熟悉它呢?不外乎2点

    1、大量的代码阅读

    2、跟踪调试代码

    今天我们就简单的学习一下在Ubuntu下简单调试chromium代码

    首先我们必须弄个Debug调试版本在Ubuntu上运行调试。

    编译步骤:

    1、build/install-build-deps.sh

    2、build/gyp_chromium-Dflag1=value1-Dflag2=value2

    3、export GYP_DEFINES="flag1=value1 flag2=value2"

    4、ninja-v-Cout/Debug chrome

    编译成功后会在src/out/Debug 下生成300个左右文件其中有chrome可执行程序和库。

    调试:

    调试多进程最简单的方法是用 attach pid 

    shell下:gdb src/out/Debug/chrome 启动到gdb输入后用 r -no-sandbox (沙箱模式无法运行,有待研究)

    ps -ax 查看进程id

    或者用pstree -p|grep chrome

    再新打开的shell输入sudo gdb (有权限限制必须用root权限)

    gdb启动后输入attach pid 然后加上你要调试的断点

    我们调试RenderImage.cpp  layout 函数在绘制进程中调用堆栈

    有了函数调用堆栈顺序,你有不理解不清楚的地方加个断点,查看堆栈一切都这么简单。

    Debug调试只能起到辅助作用,学习还是需要我们理解框架、大量阅读源码。

    如果大家对本系列文章有疑问,可以直接在公众号留言,小编第一时间联系原创作者帮你耐心解答。

    技术人员都有自己的情怀,深陷其中而不被理解,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),一个开发人员的家,来诉说自己的故事。

  • 相关阅读:
    windows 2008 r2 开启互访和网络发现
    uchome 模拟发布动态和通知遇到的问题
    远程无法连接win2003的mssql2000服务器
    cidaemon.exe进程占用CPU资源的解决办法
    asp.net如何生成图片验证码
    SQL Server中截取日期型字段的日期部分和时间部分
    刷新项目失败。无法从服务器中检索文件夹信息。
    CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\***.dll”错误处理
    Computer Browser服务启动后自动停止
    FCK使用 体会
  • 原文地址:https://www.cnblogs.com/yistn/p/4413957.html
Copyright © 2011-2022 走看看