Jia*_* Xu 10 debugging emacs sbcl common-lisp slime
我想知道使用Emacs和SLIME以交互方式调试Common Lisp的有效方法是什么.
我之前做过的事情:作为使用IDE(VS和PyCharm)学习C和Python的人,我习惯于设置断点,添加手表,然后踩踏.但是当我开始使用CL时,我发现调试工作流程根本不同.我没有找到设置断点的好方法,通过线条查看变量如何变化.
我使用的哑方法是在代码中添加"print"并反复运行代码,效率非常低.我知道我们可以"检查"SLIME中的变量,但不知道如何以交互方式进行.
我发现的内容:我最近看到了关于摩尔斯电码转换器开发的视频,它展示了如何在SLIME中以交互方式进行调试的完整过程,这一过程非常丰富,具有启发性.就好像我们可以与编译器"交谈"一样.
我想要的是:我在网上搜索但找到了最小的教程,展示了经验丰富的Lisper如何实际开发和调试他们的程序.我渴望学习这样的经历.
你可以做很多事情:
TRACE
和UNTRACE
Common Lisp中或slime-toggle-trace-fdefinition*
).这有助于递归调用:您可以看到您传递的内容以及它们在每个级别返回的内容.(format t ...)
地方.我猜,没必要发表评论.(break)
将充当断点并让您进入调试器的表单.扰流器警报:您可以更改检查器中的值,您可以更改并重新编译代码,并从(几乎)堆栈中的任何位置重新启动.slime-macroexpand-1
(包装器MACROEXPAND-1
),甚至更好C-c M-e
的宏步进器.最后一条建议:如果要进行严格的调试,(declaim (optimize (debug 3)))
请将其包含在您的文件中,否则某些CL实现会倾向于优化堆栈上的调用或使参数无法访问.
归档时间: |
|
查看次数: |
2059 次 |
最近记录: |