Swift-进阶 01:Swift源码编译

Swift 进阶之路 文章汇总

编译环境

  • MacOS Big Sur 11.0.1
  • Xcode 12.2
  • Python 2.x
  • brew install cmake ninja

编译步骤

准备工作

  • 新建一个文件夹,命名为swift-source

  • 由于拉取资源过程中,需要访问外网,所以需要梯子(各位童鞋自行解决)

第一步:clone swift源码

这里编译的是swift-5.3.1-Release。可以自行在官网找到对应的分支,需要注意的是:swift源码版本需要与Xcode版本匹配(官方编译文档有说明)

git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git

第二步:update-checkout

这步主要是clone编译swift相关的库,否则在编译时一定会失败,这步很关键!(编译过程会很长,建议休息时间编译)

./swift/utils/build-script -r --debug-swift-stdlib --lldb

这里编译需要注意一点:文件的路径尽量避免出现中文,中文有很大的概率会报错

第三步:采用ninja编译

编译过程可以使用ninja,也可以使用Xcode,但是Xcode编译之后的支持性不是太好,所以这里采用ninja编译

./swift/utils/build-script -r --debug-swift-stdlib --lldb

第四步:使用VSCode调试Swift

  • 首先,在VSCode中安装插件


    Swift-进阶 01:Swift源码编译_第1张图片
    image
  • 添加配置文件launch.json,并修改
    Swift-进阶 01:Swift源码编译_第2张图片
    image

    需要注意的是program的路径需要与你编译的文件路径一致
{
    "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}"
        }
   ]
}
  • 点击Debug运行,断住

    image

    然后过掉断点
    Swift-进阶 01:Swift源码编译_第3张图片
    image

    看到以下结果就是运行成功了
    Swift-进阶 01:Swift源码编译_第4张图片
    image

  • 然后切换至终端,我们可以开始源码调试啦。

    • 在终端中输入以下代码(也可以从swift文件拷贝)


      Swift-进阶 01:Swift源码编译_第5张图片
      image
    • 源码中搜索swift_allocObject(这个在后面文章会讲解,仅作为调试的例子),加上断点
      Swift-进阶 01:Swift源码编译_第6张图片
      image
    • 继续在终端输入var t = CJLTeacher(),回车
      Swift-进阶 01:Swift源码编译_第7张图片
      image

这样,我们就可以愉快的调试的Swift源码啦,✿✿ヽ(°▽°)ノ✿

你可能感兴趣的:(Swift-进阶 01:Swift源码编译)