Crystal 是否有 Pry 的等价物?
Is there an equivalent to Pry for Crystal?
我对 crystal 语言很陌生。我想知道 Crystal 中是否存在像 Ruby 的 Pry 这样的调试器?
这意味着你可以在程序停止执行的这一行输入类似'binding.pry'的代码,让你控制变量。
虽然很不完整,但是有对LLDB的支持。
您可以在代码中的任何位置添加 debugger
以启动 LLDB 停止的断点。您应该(必须?)使用 -d
或 --debug
标志构建一个二进制文件,然后 运行 使用 LLDB:
$ crystal build -d foo.cr
$ lldb ./foo
(lldb) run
有关更详细的示例,请参阅 https://groups.google.com/forum/m/#!topic/crystal-lang/gRf-yDNdZ-Y。
在撰写本文时,只有 Julien 的回答是在调试模式下进行编译,放置一个 debugger
语句来创建一个断点,然后 运行 将其与 lldb.然而 horizon 上有一个新技巧:
在 Crystal 1.0 会议上的精彩演讲 Crystal on demand 中,Ary 透露了他一直在研究的 Crystal 解释器。它包括一个 REPL,但他还为 Crystal 实现了一个 Pry-like 调试器。
它尚未发布,但您可以在本次演讲中看到它的实际应用。关于交互式调试器的部分 starts at 9:41.
它也使用debugger
语句来触发断点。如果您在解释模式下 运行 带有 crystal i
的代码,击中断点将进入交互式调试 session,就像在 Pry 中一样。细节可能会改变,因为它只是一个预览,但你已经可以看到它的潜力。
如果你想跟进开发,pull request 是 #10910: crystal i (now reopened as #11159: crystal i).
我对 crystal 语言很陌生。我想知道 Crystal 中是否存在像 Ruby 的 Pry 这样的调试器?
这意味着你可以在程序停止执行的这一行输入类似'binding.pry'的代码,让你控制变量。
虽然很不完整,但是有对LLDB的支持。
您可以在代码中的任何位置添加 debugger
以启动 LLDB 停止的断点。您应该(必须?)使用 -d
或 --debug
标志构建一个二进制文件,然后 运行 使用 LLDB:
$ crystal build -d foo.cr
$ lldb ./foo
(lldb) run
有关更详细的示例,请参阅 https://groups.google.com/forum/m/#!topic/crystal-lang/gRf-yDNdZ-Y。
在撰写本文时,只有 Julien 的回答是在调试模式下进行编译,放置一个 debugger
语句来创建一个断点,然后 运行 将其与 lldb.然而 horizon 上有一个新技巧:
在 Crystal 1.0 会议上的精彩演讲 Crystal on demand 中,Ary 透露了他一直在研究的 Crystal 解释器。它包括一个 REPL,但他还为 Crystal 实现了一个 Pry-like 调试器。
它尚未发布,但您可以在本次演讲中看到它的实际应用。关于交互式调试器的部分 starts at 9:41.
它也使用debugger
语句来触发断点。如果您在解释模式下 运行 带有 crystal i
的代码,击中断点将进入交互式调试 session,就像在 Pry 中一样。细节可能会改变,因为它只是一个预览,但你已经可以看到它的潜力。
如果你想跟进开发,pull request 是 #10910: crystal i (now reopened as #11159: crystal i).