2

我正在使用 Kyle Kingsbury 的“Clojure From the Ground Up”来学习Clojure 。

第一个练习是编写一个 Clojure 例程来测试给定的字符串是否是回文。

我写了一些递归的东西:

在此处输入图像描述

====================================================

我放入了各种 println 语句来调试它。

然后我发现Cursive有一个调试器!我尝试使用它。我无法让调试器在断点处停止。

我下拉 Run --> Debug... 并获得以下控制台输出:

====================================================

<>

Connected to the target VM, address: '127.0.0.1:5994', transport: 'socket'
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended


    Top  1234564321
    Nil?  1234564321
    Equal  1234564321

    Top  (2 3 4 5 6 4 3 2)
    Nil?  (2 3 4 5 6 4 3 2)
    Equal  (2 3 4 5 6 4 3 2)

    Top  (3 4 5 6 4 3)
    Nil?  (3 4 5 6 4 3)
    Equal  (3 4 5 6 4 3)

    Top  (4 5 6 4)
    Nil?  (4 5 6 4)
    Equal  (4 5 6 4)

    Top  (5 6)
    Nil?  (5 6)


Exception in thread "main" Syntax error compiling at (C:\Users\Joe Us-er\OneDrive\Chit\CChit\palin\src\palin\palin.clj:24:1).

<>

与目标 VM 断开连接,地址:'127.0.0.1:5994',传输:'socket'

Process finished with exit code 1

====================================================

我不知道哪些是信息,哪些只是数据。现在,为什么我的程序没有在任何断点处停止?谢谢你。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2020 年 1 月 1 日 好的。我接受了你的建议,写了一些更简单的东西。而且仍然没有断点。这是一个屏幕截图:

2 行函数,有很多没有被命中的断点。

请注意,“Top”和“Bottom”都被打印出来,但没有断点被命中。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

2020 年 1 月 2 日再次出现“愚蠢”,没有语法错误,也没有遇到任何断点。

在此处输入图像描述

是否有某种特殊的命名空间我应该参考调试?我似乎记得读过一些我不明白的东西。

或者“64 位服务器虚拟机警告”消息是否重要?

4

1 回答 1

0

找到了!我的代码中缺少的是初始命名空间声明。一旦我把这条线放进去:

(愚蠢)

并点击调试按钮,“愚蠢”程序在第一个断点处启动并停止!耶!

感谢 Daniel O King 在 Medium.com https://medium.com/@daniel.oliver.king上的一次性评论“每个 Clojure 文件都以调用 ns 运算符开始”

我在其他任何地方都没有看到过这一点。

于 2020-01-10T13:17:36.570 回答