如何简单快速调试高大上的谷歌浏览器

上一篇我们简单的将了在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),一个开发人员的家,来诉说自己的故事。

时间: 2024-12-16 03:39:35

如何简单快速调试高大上的谷歌浏览器的相关文章

Android快速调试方法

Android快速调试方法 前言:目前市面上OTT网络机顶盒几乎全部使用Android系统,公司目前是多个人使用一个编译服务器,编译一次Android系统花费时间较长,调试Android某一部分功能时候就不得不编译整个Android系统来调试,严重降低了工作开发效率,巧合之下看到公司大牛写的Android调试方法,放与网络与大家参考学习. 公司网络机顶盒(OTT)盒子使用Amlogic提供的芯片,下面就以amlogic Android系统为例. 1 Uboot快速调试方法 1.1 编译 #! /

更简单的调试Release版本Optimize code的.NET程序集

由于JIT的优化在调试Release版本程序集往往没有足够的跟踪信息,比如查看clrstack发现PARAMETERS:= <no data>状态. 在程序运行目录下创建一个[程序集名称].ini文件,比如:MyLibrary.dll => MyLibrary.ini. [.NET Framework Debugging Control] GenerateTrackingInfo=1 AllowOptimize=0 更简单的调试Release版本Optimize code的.NET程序集

Android UiAutomator 快速调试

背景:在Eclipse中不能直接运行Uiautomator工程,所以每次编写一份用例都要进行手动输入命令创建build文件.ant编译文件.push文件与运行测试这四步.调试起来不仅繁琐还浪费时间.网上找到一份快速调试的代码UiAutomatorHelper,可将这几步进行简化很方便. 步骤:将UiAutomatorHelper.java放到工程目录下(与测试脚本同步目录),在测试脚本中写个main方法.然后Run as ->java application即可 1 package com.ch

一种简单快速的模板解析方法,活用with javascript版

//一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj||{}){__p.push(\'' + str.replace( /\\/g, '\\\\' ) .replace( /'/g, '\\\'' ) .replace( /<%=([\s\S]+?)%>/g, function( match, code ) { return '\',' + code.

uiaotumator ui测试 快速调试

1. uiaotumator ui测试 Demo.java package uiautomatorDemo1; import java.io.File; import android.graphics.Point; import android.graphics.Rect; import android.os.RemoteException; import android.view.KeyEvent; import android.view.Surface; import com.android

Android无线测试之—UiAutmator运行命令介绍与快速调试

一.运行命令介绍: #Test.java package com.uiautomatortest; import android.os.Bundle; import android.os.RemoteException; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class Test extends UiAu

最简单快速的排序法之桶排法

前提:0-100内的随机数N个,实现从小到大(从大到小)排序. 实现:新建一个长度为101的数组,value初始化为0.数组每个key代表0-100中的数字,value值表示0-100中任意一个数组的出现次数. 通俗点说就是每个key代表一个桶,我们有101个桶,每个桶上表上数字0-100.把要排序的数字扔到对应的桶里,桶里扔一个数字时相应的key的value值就+1,表示桶里有几个数字. 代码实现: $numbers = array(63,6,98,54,88,5,89,16,59,10,31

PlantUML —— 应用于 Eclipse 的简单快速的 UML 编辑软件

简介: 在应用系统软件开发过程中,如果软件由很多对象组成,它的结构仅仅凭借分析很难理清,同时为了有利于软件的开发及重用,所以在开发系统之前建模是非常有必要的,在众多的建模方法中选择一种适应自身应用特点,方便不同背景的人们交流的建模方法已经成为开发人员及用户的迫切愿望.UML 是面向对象软件开发中的一种通用.统一的图形模型语言,是用于软件系统规约化.可视化构造和建模的有效工具.本文介绍了一种简单快速的 UML 编辑软件 -- PlantUML,PlantUML 是一个用来绘制 UML 图的 Jav

怎样简单快速的把PDF转换成word

现在有很多文档资料都是PDF格式,这种文档格式虽然可以编辑,但比较复杂,所以很多人会将PDF文档格式转成word文档,这样对文档的内容更加便于利用,而且也便于编辑.但是如果直接通过复制粘贴将文档中的内容复制到word中,那么对页面的排版会有很大影响,而且不能一次全部复制.那除了复制粘贴怎么可以简单快速的把PDF格式转换成一个word文档呢? 若处理的文档较多,单个文档较大,则需要用文档转换工具来操作,转换步骤基本就是选择类型,添加文件,选项设置,最后转换就可以了.?使用工具:迅捷PDF转换器具体