【问题标题】:Is there an equivalent to Pry for Crystal?有没有相当于 Pry for Crystal 的东西?
【发布时间】:2026-01-29 01:05:02
【问题描述】:

我是水晶语言的新手。我想知道Crystal中是否存在像Ruby's Pry这样的调试器?

这意味着您可以在程序停止执行时在此行输入类似“binding.pry”的代码,并让您控制变量。

【问题讨论】:

    标签: crystal-lang


    【解决方案1】:

    虽然很不完整,但还是有对 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

    【讨论】:

      【解决方案2】:

      在撰写本文时,只有 Julien 的回答是在调试模式下编译,放置 debugger 语句来创建断点,然后使用 lldb 运行它。然而,一个新的技巧即将出现:

      在 Crystal 1.0 大会上的精彩演讲 Crystal on demand 中,Ary 透露了他一直在研究的 Crystal 解释器。它包括一个 REPL,但他还在此之上为 Crystal 实现了一个类似 Pry 的调试器。

      它尚未发布,但您可以在本次演讲中看到它的实际应用。关于交互式调试器starts at 9:41的部分。

      它还使用debugger 语句来触发断点。如果您在解释模式下使用crystal i 运行代码,点击断点将进入一个交互式调试会话,就像在 Pry 中一样。细节可能会改变,因为它只是一个预览,但你已经看到了潜力。

      如果你想关注开发,拉取请求是#10910: crystal i(现在重新打开为#11159: crystal i)。

      【讨论】:

        最近更新 更多