在命令列編譯和除錯Swift程式

2021-06-22 12:13:55 字數 2043 閱讀 6735

因為個人工作習慣的關係,對於命令列的喜愛甚於gui,所以安裝了xcode 6 beta 版後,一直想看看swift 在命令列下該怎麼編譯,執行和除錯。

沒有找到特別相關的文件,所以就自己動手在xcode 的安裝目錄下找了一下,做了一些嘗試。

新的xcode 提供了乙個swift的程式,可以編譯swift **,也可以進入互動性的程式設計模式(repl)

可以把上述目錄加入path,這樣你就可以直接執行swift了。

但是如果還安裝了其他xcode 版本,比較好的方式是設定xcode命令列路徑, 避免所用的其他命令列工具版本不一致。

然後就可以執行swift如下:

xcrun swift

welcome to swift!  type :help for assistance.

1> let str = "hello swift!"

str: string = "hello swift!"

2> println (str)

hello swift!

3> :quit

乙個簡單的swift 程式:

sample.swift:

let str = "hello swift!"

println(str)

在命令列編譯swift程式

xcrun swift -emit-executable -sdk $(xcrun --show-sdk-path --sdk macosx) sample.swift

swift 命令列有幾個有意思的引數,除了-emit-executable用來生成可執行檔案,還可以生成library,甚至生成llvm ir (intermediate representation)。 如果你對llvm ir熟悉的話,可以研究一下。

這樣的話, 就生成乙個sample 的可執行檔案:

./sample

hello swift!

xcode 提供了lldb作為swift 的偵錯程式。 如果想進行源**級的調戲,請重新編譯swift 程式,並帶上-g引數,這樣目標檔案中才有相關的除錯資訊。

xcrun swift -emit-executable -sdk $(xcrun --show-sdk-path --sdk macosx) -g sample.swift 

然後執行偵錯程式

lldb sample

(lldb) l                

=> list the source code

1   

2  let str = "hello swift!"

3  println(str)

(lldb) b 3             

=> set breakpoint at line 3

breakpoint 1: where = sample`top_level_code + 57 at sample.swift:3, address = 0x0000000100001589

(lldb) r                

=> run the program

process 3003 launched: '/users/andy/coderepo/swift/sample' (x86_64)

process 3003 stopped

frame #0: 0x0000000100001589 sample`top_level_code + 57 at sample.swift:3

1   

2  let str = "hello swift!"

-> 3  println(str)

(lldb) po str  

=> print str variable

"hello swift!"

lldb的命令和gdb基本一樣,所以上手應該不難。 

另外乙個要注意的是老版本的lldb並不支援swift語言,如果發現沒辦法看到swift 的源**,或者檢視變數有問題,請檢查一下用的lldb是不是正確。 乙個簡單的方法是用ps看執行的lldb是不是xcode6 beta 目錄下的:

ps -ef | grep lldb

命令列編譯 WRK ,windbg 除錯

我看其他部落格有人用 win2k3 sp2 也成功了,但我還是按照書上的教程,裝的sp1版本。s 1x vmb0try27czerivzs8ua 提取碼 u4j3 進入 wrk 根目錄,建立bat檔案,用於編譯x86版本,輸入以下內容 編譯x86.bat set path e wrk v1.2 to...

Swift 命令列工具

swift 的 repl read eval print loop 環境可以讓我們使用 swift 進行簡單的互動式程式設計。也就是說每輸入一句語句就立即執行和輸出。這在很多解釋型的語言中是很常見的,非常適合用來對語言的特性進行學習。要啟動 repl 環境,就要使用 swift 的命令列工具,它是以...

django 命令列 Helloworld程式

這裡說一下如何使用命令列的方式來構建乙個helloworld專案。當然,python和django一定要先安裝。這個在另一篇中有提到,就不細細說了。一切安裝完畢之後,就可以新建工程了,選擇乙個資料夾作為專案根目錄,這個可以任意選擇。使用cmd cd到這個目錄下面,輸入如下命令 python djan...