對于一門語言的探索一定是從探索API源碼
開始,而探索API源碼除了一行一行的讀代碼,還可以直接進(jìn)行編譯調(diào)試,最大程度的利用開發(fā)工具。
源碼編譯
注:最終編譯產(chǎn)物需要48G左右的硬盤空間
1. 源碼下載
可以到Swift-git下載任意版本的Swift
源碼
當(dāng)然也可以使用下方命令,直接下載。
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
- 這個版本需要和Xcode版本最好保持一致。
2. 依賴下載
這一點(diǎn)Swift就很友好了,不想OC一樣需要自己手動去下載依賴庫,使用下方命令,這一部分要下載很多依賴文件,需要有一個比較好的網(wǎng)絡(luò)。自己嘗試下來最好是在早上進(jìn)行下載,成功的概率高很多
./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone
這里提供一份下載并且執(zhí)行完第二步的代碼,網(wǎng)不好的不用謝了哈~來個三連就行??!
鏈接:https://pan.baidu.com/s/1Q7bCGJ2CYHo33-x3UoZJSQ 密碼:cp4w
3. 編譯
由于xcode編譯會有很多問題,這里選擇使用VS Code
編譯器來進(jìn)行編譯.
編譯過程還需要ninja
,cmake
brew install cmake njnia
注:這一步需要,你懂得~
完成以上步驟,直接執(zhí)行:
/swift/utils/build-script -r --debug-swift-stdlib --lldb
這個過程有一點(diǎn)長,而且CPU溫度可能有點(diǎn)高,建議使用別人的電腦來執(zhí)行,因?yàn)橛米约旱臅奶?。。?!?/p>
這里依舊提供一份完成第三步的代碼,別忘了給個三連~~
鏈接:https://pan.baidu.com/s/1ZafU3-H9CW6seLNFx98jlQ 密碼:4zua
使用vsCode來調(diào)試swift
由于我們使用vscode來進(jìn)行編譯,所以在調(diào)試的時候也需要用vscode來進(jìn)行。
1. 首先需要安裝CodeLLDB
點(diǎn)擊就可以安裝。
但是安裝之后會出現(xiàn):依賴的安裝
這一步非常慢,反正我等了一夜都沒有好,所有只能進(jìn)行手動下載:vscode-lldb下載地址
選擇darwin
手動安裝CodeLLDB
安裝完成后,根據(jù)提示提供vscode即可完成
2. json文件配置
使用以下json進(jìn)行配置
{
"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. 啟動調(diào)試
完成1,2兩步,即可觀察到3,4兩步。
如果啟動之后遇到以下問題:
首次運(yùn)行看到這個不要慌,重新
run
一遍就好,應(yīng)該是初次資源重定向的問題
啟動之后會觸發(fā)自動_dyld_start
斷點(diǎn),直接過了就好。
4. 調(diào)試
到這一步,恭喜你你已經(jīng)成功了!
編寫Swift
增加斷點(diǎn)
但是你會發(fā)現(xiàn)你的紅框部分是沒有數(shù)據(jù)的
,如何解決呢?
-
先找到
CodeLLDB
的目錄
-
然后找到編譯過后的
LLDB
目錄,將這里面的文件全部拷貝到第一步的CodeLLDB
目錄中
-
最后將第二步中
lldb
可執(zhí)行文件拷貝到下圖的目錄下,并且改名為liblldb.dylib