編譯環(huán)境
- 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
這里編譯需要注意一點:文件的路徑盡量避免出現(xiàn)中文
,中文有很大的概率會報錯
第三步:采用ninja編譯
編譯過程可以使用ninja,也可以使用Xcode,但是Xcode編譯之后的支持性不是太好,所以這里采用ninja編譯
./swift/utils/build-script -r --debug-swift-stdlib --lldb
第四步:使用VSCode調試Swift
-
首先,在VSCode中安裝插件
image - 添加配置文件
launch.json
,并修改
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
然后過掉斷點
image
看到以下結果就是運行成功了
image -
然后切換至終端,我們可以開始源碼調試啦。
-
在終端中輸入以下代碼(也可以從swift文件拷貝)
image - 源碼中搜索
swift_allocObject
(這個在后面文章會講解,僅作為調試的例子),加上斷點
image - 繼續(xù)在終端輸入
var t = CJLTeacher()
,回車
image
-
這樣,我們就可以愉快的調試的Swift源碼啦,??ヽ(°▽°)ノ?