在命令行编译和调试Swift程序

因为个人工作习惯的关系,对于命令行的喜爱甚于GUI,所以安装了Xcode 6 Beta 版后,一直想看看Swift 在命令行下该怎么编译,运行和调试。


没有找到特别相关的文档,所以就自己动手在Xcode 的安装目录下找了一下,做了一些尝试。


1. 运行Swift

新的Xcode 提供了一个Swift的程序,可以编译Swift 代码,也可以进入交互性的编程模式(REPL)

/Applications/Xcode6-Beta.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift


可以把上述目录加入PATH,这样你就可以直接运行swift了。


但是如果还安装了其他Xcode 版本,比较好的方式是设置Xcode命令行路径, 避免所用的其他命令行工具版本不一致。

sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer


然后就可以运行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


2.  编译Swift 程序

一个简单的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!


3.  调试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

* thread #1: tid = 0x8019, 0x0000000100001589 sample`top_level_code + 57 at sample.swift:3, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1

    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

  501  3047   447   0 11:13PM ttys000    0:00.20 /Applications/Xcode6-Beta.app/Contents/Developer/usr/bin/lldb sample




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值