Swift-進階 01:Swift源碼編譯

Swift 進階之路 文章匯總

編譯環(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源碼啦,??ヽ(°▽°)ノ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。