文档章节

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

lonely1986
 lonely1986
发布于 2015/04/11 00:27
字数 561
阅读 35
收藏 0
点赞 0
评论 0

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

© 著作权归作者所有

共有 人打赏支持
lonely1986
粉丝 109
博文 34
码字总数 8686
作品 0
海淀
API & HTTP 请求调试插件(Postman)

简述 Postman 是一个 Chrome 扩展,提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的 HTTP 请求(GET、HEAD、POST、PUT..),附带任何数量的参数 + headers。 支持不同的认证机制...

潘志闻 ⋅ 2016/05/19 ⋅ 0

函数计算中使用 puppeteer.js

puppeteer.js github 地址:https://github.com/GoogleChrome/puppeteer API: https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md 函数计算文档:https://help.aliyun.com......

木香丘 ⋅ 06/12 ⋅ 0

如何调试 Android 手机网页

兵马未动,粮草先行。安排好 debug 工作的道理也一样,调试的基本工作务必先于开发之前搞得好,不然后果很严重……!哈哈,这样的开场白太那个了……其实实不相瞒,俺的实际情况是,到项目后...

sp42 ⋅ 2012/10/13 ⋅ 0

Jerry和您聊聊Chrome开发者工具

Chrome开发者工具是Jerry日常工作使用的三大调试器之一。虽然工具名称前面带了个"开发者", 但是它对非开发人员仍然有用。不信? 用Chrome打开我们常用的网站,按F12,在Console标签页里看到这...

jerrywangsap ⋅ 04/16 ⋅ 0

Webstorm+Chrome plugins JetBrains IDE Support实现强大的JavaScript调试功能

前言 WebStorm是Jetbrains公司旗下一款JavaScript 开发工具,当你打开这款软件的时候会觉得特别的熟悉,因为它和itellj idea属于同款产品,界面和快捷键基本类似,而且功能非常强大,提示也非...

changyinling520 ⋅ 05/10 ⋅ 0

异步调试神器Slog,“从此告别看日志,清日志文件了”

微信调试、API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中 — Edit PHPJavaScriptHTML Branch: master SocketLog/ Pull request CompareThis branch is ev...

thinkyoung ⋅ 2015/08/12 ⋅ 0

通过SocketLog快速分析OneThink程序

通过SocketLog快速分析OneThink程序 http://www.thinkphp.cn/topic/10846.html 浏览:2332 发布日期:2014/02/08 分类:技术分享 正在运行的API有bug,不能var_dump进行调试,因为会影响cli...

thinkyoung ⋅ 2015/08/13 ⋅ 0

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

上一篇我们简单的将了在Ubuntu上编译chromium,android contentshellapk的编译,一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西,作为一个开发者我们应带着探索的精神,...

yistn ⋅ 2015/04/10 ⋅ 0

Chrome常用URL命令(伪URL)

在Chrome地址栏输入chrome://chrome-urls/可以看到所有的Chrome支持的伪RUL 1、chrome://accessibility/ 可达性分析,默认是关闭的,点击accessibility off后变成accessibility on|show acc...

easonjim ⋅ 2017/11/22 ⋅ 0

【连载】物联网全栈教程-从云端到设备(九)----Bone Web 框架的第一个项目Hello World

物联网全栈教程-从云端到设备(九) 一 这一篇文章零妖带你学习全宇宙最简单的网页应用开发框架:Bone Web 框架,这是一个通过敲代码来制作网页的框架,非常适合不需要华丽界面的物联网项目。...

零妖 ⋅ 05/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 11分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 31分钟前 ⋅ 0

a href="#"

<a href="#">是链接到本页,因为你有的时候需要有个链接的样式,但是又不希望他跳转,这样写,你可以把这个页面去试试

颖伙虫 ⋅ 38分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 38分钟前 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 47分钟前 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 59分钟前 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremo...

Linux_老吴 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部