【问题标题】:How to debug a console app from the REPL?如何从 REPL 调试控制台应用程序?
【发布时间】:2017-04-23 13:19:42
【问题描述】:

日常开发使用emacs+cider真的很舒服。我在文本编辑器中配置的所有内容都非常适合这项任务。

我在业余时间从事的当前项目是文本编辑器。 我已经在 C++ 中实现了一个,我使用 gdb 进行调试,来自 emacs。为了运行它,我在gdb 缓冲区中输入了set new-console on 和run。这会弹出一个新的控制台来处理所有的 I/O。

现在我正在尝试在 Clojure 中重新实现它。到目前为止,我最大的担忧之一是调试。我认为这不会是与我使用 gdb 类似的东西。

对于在没有缓冲的情况下读取键盘,我使用的是JLine。这意味着read-line 不会提供所需的结果。

什么是调试此类应用程序的合理方法(使用来自控制台的大量 I/O)?

如何在 emacs/cider 中进行操作?

如果这很重要,我正在使用 lein。


P.S.:这是我制作的similar question,具有更广泛的“意图”。我觉得值得一看。

【问题讨论】:

    标签: emacs clojure leiningen cider


    【解决方案1】:

    如今,CIDER 带有出色的 debugger。另请参阅screenshot。

    对您来说最简单的事情可能是创建一个包含 nREPL 和 CIDER 作为依赖项的 lein/boot 构建配置文件,并使用 embedded CIDER instance。这将让您从能够获得无缓冲键盘 I/O 的终端“独立”运行您的应用程序,并且您可以通过 M-x cider-connect 连接到嵌入式 nREPL+CIDER 实例以充分利用调试器和像往常一样加载代码。

    【讨论】:

    • 是的,我几乎每天都在使用它。这里的问题是处理 I/O。对于这种控制台应用程序,read-line 是不够的。必须无缓冲地读取密钥。我目前正在为此使用JLine。我将在问题中添加此详细信息。不过谢谢你的回答!
    • 我会解决这个问题的。如果它有效,我会更新答案。顺便说一句,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-22
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多