从今天开始,进入swift
学习篇章。
想了解
OC底层原理
,可查看👉 OC底层原理 学习大纲
本系列 swift进阶 学习大纲
编译环境
- Xcode版本:
12.0
,macOS版本:10.15.4
- 安装
VSCode
- 安装
Homebrew
(👉官网地址):/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装
cmake
:brew install cmake
- 安装
njnia
:brew install cmake njnia
友情提示: 编译后
的swift
,需要50-60G
空间,可选择在移动硬盘
中编译
1. 下载源码
swift
是开源语言
,所以我们可以在github
上下载最新源码
。👉 swift官方地址
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
-
注意:请下载
匹配
自己的Xcode版本
的release
源码版本。
2. update-checkout
在swift
的根目录
下,执行如下命令:
./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone
-
注意:这一步非常重要。因为
update-checkout
会clone
编译swift
相关库,不然后面编译swift
源码时一定失败
。
3. 编译
使用njnia
进行编译
。
./swift/utils/build-script -r --debug-swift-stdlib --lldb
4. 使用VSCode
调试Swift
-
打开
image.pngVSCode
,搜索
并安装CodeLLDB
-
打开
image.pngswift
文件夹(根文件夹
)
-
添加
image.pngjson
文件
注意:需要修改program
的文件路径
为自己的路径
(build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift
)
如果
Run
处看不到这个Debug
框:
- 请确保
VSCode
已打开swift
文件夹- 点击
show
展示debug配置
,在弹出
的选择框
中,点击add configuration...
选项即可。
image.png
-
点击
箭头,运行
Debug环境
如果没配置
image.pngprogram
,可能看到下面提示
,修改一些launch.json
的program
路径即可
-
run
起来后,会进入断点
。点击继续运行
:
image.png - 可以看到
swift
已成功运行
。
image.png
5. 配置断点
信息
我们先尝试一下断点
:
- 按照
目录
找到swift
->stdlib
->public
->core
->Sequence.swift
文件,- 搜索
forEach {
,鼠标左键
点击718行
,加入断点
。- 在下面的
TERMINAL
中输入测试代码
:(遍历打印[1,2,3]数组元素)[1,2,3].forEach{ print($0) }
输完
后,回车
。 可以看到进入
了断点
:
image.png
- 发现
Local
中,没有
任何断点信息
。
image.png
解决方法:
- 打开
VSCode
的lldb
文件夹:~/.vscode/extensions/vadimcn.vscode-lldb-1.6.0/lldb/bin/
image.png- 打开
swift
编译文件的lldb
文件夹:【swift编译根目录】/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/lldb-macosx-x86_64/bin
image.png- 将编译好的
swift
的lldb
的bin
文件夹内容全部拷贝
到VSCode
的lldb
的bin
文件夹中。(重名文件
全部选择替换
)
image.png- 将编译好的
swift
的lldb
的bin
文件夹中的lldb
(黑色的可执行文件),拷贝到VSCode
的lldb
的lib
文件夹中(注意是lib文件夹
)
image.png- 在
VSCode
的lldb
的lib
文件中,删除原liblldb.dylib
文件,将黑色的lldb
文件,重命名为liblldb.dylib
:
image.png
- 重新
run
,放过第一次断点,进入forEach
断点:
Xcode
的编译
方式:(详细流程,请参考👉 swift官方文档)ps: 未亲测,仅记录下
- 要在 Xcode 中打开 Swift 项目,请打开
/swift-source/build/Xcode-ReleaseAssert+swift-DebugAssert/swift-macosx-x86_64/Swift.xcodeproj
。它将为所有可用目标自动创建很多方案。常见的调试流程将涉及:- 选择
swift scheme
。- 调出
scheme
编辑器(⌘⇧<)。- 选择
Arguments
选项卡,然后单击+
。- 添加
命令行
选项,这个根据自行需求设置,如果没有特殊需求,正常编译
- 关闭
scheme
编辑器。编译
并运行
。
网友评论