在macOS上面编译与调试Chromium (转载)

https://beyondkmp.com/2023/09/03/compile-and-debug-chromium/#!

编译chromium

系统要求

  1. A mac, intel or M1
  2. Xcode
  3. The macOS SDK. 运行下面的命令来检测是不是已经安装bashls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKs
  4. An APFS-formatted volume (macOS系统的默认文件系统格式)

安装 depot_tools

下载 depot_tools

bash

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

将depot_tools添加到环境变量PATH中

bash

export PATH="$PATH:/path/to/depot_tools"

获取chromium源码

新建chromium目录来放置源码, 需要大概100G的空间,如果没有,最后会因为空间不足而失败。

bash

mkdir chromium && cd chromium

拉取源码, 这个取决于你的网络速度,一般要几个小时,所以可以放到晚上拉取, 还有如果失败要重试,使用gclient sync命令

bash

caffeinate fetch chromium

配置build参数

通过GN工具生成.ninja配置文件,通过ninja工具编译

bash

gn gen out/Default --ide=xcode

添加dsym配置

add enable_dsyms = true out/Default/args.gn

编译Chromium

有5万多个文件需要编译,一般也需要3个小时以上,所以也可以放到晚上编译。

bash

autoninja -C out/Default chrome

运行编译好的Chromium

bash

out/Default/Chromium.app/Contents/MacOS/Chromium

xcode调试Chromium

  1. 关闭xcode的source controlxcode -> preferences -> source control -> uncheck Enable Source Control不关闭这个会导致xcode卡死,因为chromium的源码太大了,xcode会一直在扫描源码,导致卡死。
  2. 生成Xcode项目上面已经通过--ide=xcode参数生成了Xcode项目,所以可以直接打开out/Default/all.xcodeproj项目

调试Chromium

  1. 打开Chromiumbash./out/Debug/Chromium.app/Contents/MacOS/Chromium
  2. 打开xcode项目直接打开out/Default/all.xcodeproj项目, 直接选择automatically create schemes.xcodexcode
  3. 设置断点在chrome/browser/ui/views/tabs/new_tab_button.cc文件中的void NewTabButton::NotifyClick(const ui::Event& event) 函数中设置断点breakpointbreakpoint
  4. attach到Chromium进程Debug -> Attach to Process -> Chromium这个需要等一会,等attach完成后,就可以在xcode中调试Chromium了。attachattach
  5. 调试Chromium在Chromium中打开一个新的tab,就会触发断点,然后就可以在xcode中调试了,如下图.debug