从Chrome源码看JavaScript的执行流程(二)环境搭建

下载和编译指定版本的chromium

这一步部分是我自己安装编译chromium的过程记录,有相关经验的可以直接看后面的调试部分

Appstore 搜索安装xcode,安装完成后输入

测试是否成功

安装depot_tools(记得给git设置代理,不建议用git clone的方法安装,我因为这里坑了挺久的,而且一定要注意网速和代理的稳定性,万恶的GFW,同时记得给python也挂代理,不然之后runhooks的时候会报错)

然后建立一个chromium目录,在目录下执行

给git设置代理和取消代理的命令:

如果因为网速问题断掉了,直接在chromium目录下执行

就可以了,下载顺利,然后执行

runhooks的时候,下载到Downloading package archive: binutils_arm_x86_64_apple_darwin.tgz的时候还是报错

重新用fetch和gclient sync下载完成后再次进入hooks的部分,还是报上面的错误

看起来是这个文件有问题,并且直接访问访问不了

好像是代理的问题,这里是用python下载的,把之前的git代理关掉

然后用proxifier全局代理继续下载

这时已经过了sync的部分,到了runhooks的部分了,但是为什么还是不行

突然想起来proxifier没有把python放进默认代理里,因为之前用reGeorg的时候python是不能放在default里的,需要把python也放进代理

OK 看起来sync和hook都弄好了,进入编译环节

mac下用zsh cd进一个大的git目录会卡死,需要在src目录下执行下面的命令,就不会卡了:

在src目录下

返回

然后就可以开始编译了

还是在src目录下执行,编译数个小时后一次成功

好吧,编译是编译好了,但是一打开就闪退

看了下版本 chromoium 69 …

我需要下载指定的stable版本的chromium

例如最新的stable版本67.0.3396.99

那么就要

要重新下载整个源码?先下着看看…

git fetch到后面报错 ……..

突然想起可能是最早用了no-history的问题导致不能更改版本,所以还是不要用no-history重新用fetch再来一次吧orz

返回:

然后用

返回:

然后同步一次

报错,可能是之前断掉之后某次sync没有加nohooks的结果

手动把这些文件删掉,然后再sync一次,直接就done了,试一下编译

编译了将近5个小时,终于弄好了,版本67.0.3396.99,完结撒花

整个chromium目录有80个G,我256G硬盘的小破mac就要撑不住了….

调试准备

先来一段官方文档:https://www.chromium.org/developers/how-tos/debugging-on-os-x

xcode清除缓存的命令,如果一直卡在indexing可以试试

src目录下会生成一个xcode调试文件,我的xcode是最新版,调试文件的名字是

xcode的gdb(现在是lldb)不允许调试多个进程,而chrome每一个tab都是一个进程,有两种调试方法:

1.运行单进程的chrome:

2.启动时将xcode绑定到一个渲染进程

就会返回

然后用xcode去attach这个进程

如果想在chrome打开的时候就直接打开一个页面,用这个命令:

以及调试时可以用–no-sandbox关闭沙箱