一、编译环境
- macOS 11.0.1
- Xcode version 12.2
- Python 2.x
- brew install make ninja
二、编译步骤
1. clone swift源码
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
如果想要编译其它版本的可以从分支中查找
2. 进入swift-source目录运行update-checkout
./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone
这一步会下载Swift相关的库
3. 编译Swift
进入swift-source目录执行
./swift/utils/build-script -r --debug-swift-stdlib --lldb
这里推荐使用ninja来编译,使用Xcode编译我还没尝试
4. 使用vscode来调试swift源码
首先我们需要安装vscode插件CodeLLDB
接下来配置JSON文件
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift",
"args": [],
"cwd": "${workspaceFolder}"
} ]
}
run起来之后过掉第一个断点
如果区域3不显示,先找到vscode的安装目录
显示隐藏文件的快捷键 command+shift+.
然后找到LLDB目录拷贝以下文件到vscode安装目录对应位置
同时修改lib文件夹中的dylib文件