vim和python脚本调试

时间:2009-12-14 13:02:34

标签: python vim

有没有办法调试python脚本而不是在* nix系统中保留vim(执行脚本,设置断点,在监视列表中显示变量等)?

10 个答案:

答案 0 :(得分:35)

使用pdb

import pdb
def main():
  list = [1,2,3]
  pdb.set_trace()
  list = [2,3,4]

if __name__ == '__main__':
    main()

现在使用:!python %运行,您将点击断点并能够像gdb中那样以交互方式进行调试。

答案 1 :(得分:7)

试试pyclewn。它允许使用vim作为pdb的前端。您可以创建/删除断点,控制调试过程的流程,查看变量的值。全部来自vim!

答案 2 :(得分:5)

同时尝试https://pypi.python.org/pypi/pudb - 它就像pdb一样,但更先进。包含代码突出显示,堆栈,显示可用值等。不仅是-vim解决方案,但对我来说工作完美。

三个步骤:

安装:

  

pip install pudb

在代码中粘贴set_trace

  

来自pudb import set_trace; set_trace()

运行您的代码

答案 3 :(得分:3)

从Python 3.7开始,您可以使用内置的breakpoint()而不导入任何内容。

内置breakpoint()调用sys.breakpointhook()。默认情况下,后者导入pdb,然后调用pdb.set_trace()

Pierre-Antoineanswer继承代码,代码看起来像这样:

def main():
  list = [1,2,3]
  breakpoint()
  list = [2,3,4]

if __name__ == '__main__':
    main()

来源:https://docs.python.org/3/whatsnew/3.7.html#pep-553-built-in-breakpoint

答案 4 :(得分:1)

Vim和pdb-clone是我使用的组合。我使用Home - pyclewn提供了一个名为pdb-clone的pdb的替代品,它比vanilla pdb快得多。它通过插件很好地与vim集成,我最欣赏的是它处理代码之外的断点,而不是在其中设置跟踪,因此不会弄乱我的行号。它还没有python的监视窗口。您也可以查看vim-debug,我无法使用现有的突出显示设置。

答案 5 :(得分:1)

在{2020年之前,vimspector将注意调试器适配器协议。 支持Cpp,Python,Java,Js,Go ... 参见my other answer

答案 6 :(得分:0)

请参阅this博文中的“调试”部分。它显示了如何设置F7以设置断点,并设置Shift + F7以删除断点。如前所述,它还使用pdb。只需稍加修改,您就可以将pdb替换为ipdbpdb使用ipython),这样可以使用得更好。

答案 7 :(得分:0)

vimpdb插件将Python调试器pdb集成到了VIM编辑器中。

我推荐它。

希望有帮助。

答案 8 :(得分:-2)

听起来您想将VIM用作Python IDE。

快速Google搜索找到thisthis示例,还有更多。

编辑:嗯,好吧,你的搜索似乎比我更多。

我希望别人有一些想法。

答案 9 :(得分:-3)

据我所知,还有一个选择:您可以使用Eclipse + PyDev进行项目管理,将Vim用作Eclipse的编辑器。这样你可以使用两全其美。

另外,我还没试过,但你可以试试this script