调试 Chromium
在 out\Debug_*
目录下会自动生成 cef.sln 工程文件,用 VS 打开后即可附加调试
命令行参数
--log-level=1 # 日志输出等级 INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3
--log-file # 日志文件
--enable-logging=stderr # 重定向日志到标准错误输出
对于 VERBOSE 等级日志,需要专门指定模块等级。参考 base/logging.h
--vmodule=profile=2,icon_loader=1,browser_*=3,*/chromeos/*=4 # 模块日志等级
编译 Chromium
参考 chromium 官方文档 https://www.chromium.org/developers/how-tos/get-the-code
depot_tools 环境参数
rem 禁止更新
set DEPOT_TOOLS_UPDATE=0
rem 使用本地工具链
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
rem python3 有问题,暂时使用 python2
set GCLIENT_PY3=0
rem 不使用 gn 工具
set CEF_USE_GN=0
rem Windows SDK 路径
set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10
初始化 gclient 工程
gclient config --unmanaged --name=src https://chromium.googlesource.com/chromium/src.git
创建 gclient 工程
gclient sync
gclient sync --nohooks --no-history
设置 gn flags 参考:https://www.chromium.org/developers/gn-build-configuration#TOC-Goma
gn 命令可以列出所有可以设置的 flags 及其说明。
gn args out/mybuild --list
或者是指定 flags 的说明
gn args out/mybuild --list=is_component_build
代码获取
构建文档 https://chromium.googlesource.com/chromium/src/+/master/docs/get_the_code.md
先获取 depot_tool https://chromium.googlesource.com/chromium/tools/depot_tools/
禁用更新
set DEPOT_TOOLS_UPDATE=0
git 代理
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
修改 powershell 下载脚本 depot_tools\.cipd_impl.ps1
,增加代理配置。
$proxy = (New-Object System.Net.WebProxy("http://127.0.0.1:8118"))
$proxy.UseDefaultCredentials = $true
$wc = (New-Object System.Net.WebClient)
$wc.Headers.Add("User-Agent", $UserAgent)
$wc.Proxy = $proxy
配置 .cipd_client.exe 代理
这个程序由 golang 编写,所以配置 golang 的代理即可。
set http_proxy=127.0.0.1:8118
set https_proxy=127.0.0.1:8118
修改 python 下载脚本 depot_tools\gsutil.py
,增加代理配置。
proxy_handler = urllib.ProxyHandler({"http" : '127.0.0.1:8118', "https" : '127.0.0.1:8118'})
opener = urllib.build_opener(proxy_handler)
urllib.install_opener(opener)
windows 下注意设置 git
git config --global user.name "My Name"
git config --global user.email "my-name@chromium.org"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global branch.autosetuprebase always
编译指定版本
git checkout -b branch_$BRANCH branch-heads/$BRANCH
gclient sync --with_branch_heads --with_tags
检出指定分支后需要使用 gclient
命令同步更新依赖。参考 编译指定分支。
检出
使用 fetch 创建 gclient 项目并获取工程代码。
fetch chromium
如果不需要历史代码可以加上 --no-history
参数。不运行 hooks 加参数 --nohooks
。
模拟运行加参数 --dry-run
。
fetch chromium --no-history --nohooks
之后使用 gclient 保持更新。
gclient sync --no-history --nohooks --verbose
如果出现错误,部分依赖下载失败,则手动 clone 代码。
环境编译
依赖 VS ATLMFC 模块
PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--includeRecommended
增加编译环境变量
rem 使用本地编译工具链
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
rem GYP 编译器配置
set GYP_MSVS_VERSION=2017
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
rem GN 编译器配置
set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional
编译还依赖于 Debugging Tools for Windows,它包含在 Windows SDK 中。
但默认情况下 VS 在安装 Windows SDK 时并不会安装它。
需要在应用管理设置中选择修改 Windows Software Development Kit 包,增加选中 Debugging Tools For Windows。
编译
生成 ninja 工程。
gn gen out/Default
编译
autoninja -C out\Default chrome