如何从 REPL 调试控制台应用程序?
How to debug a console app from the REPL?
日常开发使用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,更宽泛的"intend"。我觉得值得一看
CIDER 具有出色的 debugger nowadays. See also this screenshot。
对您来说最简单的事情可能是创建一个 lein/boot 构建配置文件,其中包括 nREPL 和 CIDER 作为依赖项并使用 embedded CIDER instance。这将使您 运行 您的应用程序 "standalone" 从终端获得无缓冲键盘 I/O,并且您可以通过 M-x cider-connect
连接到嵌入式 nREPL+ CIDER 实例以像往常一样充分利用调试器和代码加载。
日常开发使用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,更宽泛的"intend"。我觉得值得一看
CIDER 具有出色的 debugger nowadays. See also this screenshot。
对您来说最简单的事情可能是创建一个 lein/boot 构建配置文件,其中包括 nREPL 和 CIDER 作为依赖项并使用 embedded CIDER instance。这将使您 运行 您的应用程序 "standalone" 从终端获得无缓冲键盘 I/O,并且您可以通过 M-x cider-connect
连接到嵌入式 nREPL+ CIDER 实例以像往常一样充分利用调试器和代码加载。