对于一门语言的探索一定是从探索API源码
开始,而探索API源码除了一行一行的读代码,还可以直接进行编译调试,最大程度的利用开发工具。
源码编译
注:最终编译产物需要48G左右的硬盘空间
1. 源码下载
可以到Swift-git下载任意版本的Swift
源码
当然也可以使用下方命令,直接下载。
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
- 这个版本需要和Xcode版本最好保持一致。
2. 依赖下载
这一点Swift就很友好了,不想OC一样需要自己手动去下载依赖库,使用下方命令,这一部分要下载很多依赖文件,需要有一个比较好的网络。自己尝试下来最好是在早上进行下载,成功的概率高很多
./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone
这里提供一份下载并且执行完第二步的代码,网不好的不用谢了哈~来个三连就行!! 链接:https://pan.baidu.com/s/1Q7bCGJ2CYHo33-x3UoZJSQ 密码:cp4w
3. 编译
由于xcode编译会有很多问题,这里选择使用VS Code
编译器来进行编译.
编译过程还需要ninja
,cmake
代码语言:javascript复制brew install cmake njnia
注:这一步需要,你懂得~
完成以上步骤,直接执行:
代码语言:javascript复制/swift/utils/build-script -r --debug-swift-stdlib --lldb
这个过程有一点长,而且CPU温度可能有点高,建议使用别人的电脑来执行,因为用自己的会心疼。。。。
最终编译产物
这里依旧提供一份完成第三步的代码,别忘了给个三连~~ 链接:https://pan.baidu.com/s/1ZafU3-H9CW6seLNFx98jlQ 密码:4zua
使用vsCode来调试swift
由于我们使用vscode来进行编译,所以在调试的时候也需要用vscode来进行。
1. 首先需要安装CodeLLDB
点击就可以安装。
但是安装之后会出现:依赖的安装
这一步非常慢,反正我等了一夜都没有好,所有只能进行手动下载
选择darwin
手动安装CodeLLDB
安装完成后,根据提示提供vscode即可完成
2. json文件配置
使用以下json进行配置
代码语言:javascript复制{
"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}"
} ]
}
3. 启动调试
完成1,2两步,即可观察到3,4两步。
如果启动之后遇到以下问题:
首次运行看到这个不要慌,重新run
一遍就好,应该是初次资源重定向的问题
启动之后会触发自动_dyld_start
断点,直接过了就好。
4. 调试
到这一步,恭喜你你已经成功了!
编写Swift
增加断点
但是你会发现你的红框部分是没有数据的
,如何解决呢?
- 先找到
CodeLLDB
的目录
- 然后找到编译过后的
LLDB
目录,将这里面的文件全部拷贝到第一步的CodeLLDB
目录中
- 最后将第二步中
lldb
可执行文件拷贝到下图的目录下,并且改名为liblldb.dylib
参考:VSCode: Acquiring CodeLLDB platform package 速度慢