在组织模式下调试代码块


11

有没有可用的工具来简化组织模式块中的跟踪错误?(我正在专门使用python)

我当前的工作流程是将可工作的代码复制到源代码块,并尝试仅进行最小的修改。如果发生重大错误,我要么将其复制回另一个文件,要么纠缠该块并调试生成的文件。

我缺少任何工具吗?(例如,类似编译模式的模式,它将带您进入错误所在的行。)

编辑:例如,我刚刚找到Cc Cv v,它带出了一个扩展了noweb引用的缓冲区。不幸的是,它不包含标头参数,因此如果不先将其导入解释器中,则无法运行其中的代码。同样,如果我有一个return语句,则该语句不能执行,并且缓冲区不可编辑,因此需要执行几个步骤才能从python块获取可运行的源代码。


3
参见emacs.stackexchange.com/questions/13244/…。我当前最喜欢的解决方案是(org-src-debug)。这样的好处是您可以使用输入参数调试源代码块。
Tobias

对存在类似问题的其他人进行评论:user2699编辑了问题,以表明他想调试python源代码块。Tobias的最后注释仅适用于emacs-lisp代码块的执行。
Tobias

1
您是否:session在代码块中添加了标头?例如:session *my-python*。然后,只需*my-python*在另一个框架或窗口的缓冲区中观看脚本执行即可。我猜您想要比这更正确的东西吗?
Melioratus

@Melioratus,它有点原始(似乎不能很好地处理错误,并在python控制台中添加了额外的输出),但是它比什么都没有要好得多。而且python控制台非常好。您应该将其作为答案提交。
user2699

@Tobias,谢谢,这是我正在寻找的东西,只是不专门针对elisp。
user2699

Answers:


7

方法1

  1. :session标题添加到您的源代码块。

    在示例中,使用:session标头将在名为的缓冲区内执行代码*my-python*并显示调试消息。

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    提示:

    • 用于C-c C-v C-z垂直拆分屏幕并显示交互式*my-python*缓冲区。
    • 使用C-c C-v ?显示其他有用的快捷键。

方法2

  1. 在代码块,并使用编辑框的地方点C-c ',即org-edit-special。此方法将允许您使用python-mode内置功能。

  2. 使用启动python解释器C-c C-p,它将拆分窗口并打开缓冲区名称*Python*。要切换到python解释器缓冲区,请按C-c C-z

    注意:最近我注意到显示了一个*Warnings*缓冲区。只需将点放在*Warnings*缓冲区内,然后按q以显示*Python*缓冲区。

  3. 完成后,使用将您的更新代码传播到代码块中,C-c '或使用放弃任何更改C-c C-k


请注意,此代码已使用以下软件进行了测试:
emacs版本:GNU Emacs 26.1
组织模式版本:9.1.14

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.