有没有办法调试python脚本而不是在* nix系统中保留vim(执行脚本,设置断点,在监视列表中显示变量等)?
答案 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-Antoine的answer继承代码,代码看起来像这样:
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
替换为ipdb
(pdb
使用ipython),这样可以使用得更好。
答案 7 :(得分:0)
答案 8 :(得分:-2)
答案 9 :(得分:-3)
据我所知,还有一个选择:您可以使用Eclipse + PyDev进行项目管理,将Vim用作Eclipse的编辑器。这样你可以使用两全其美。
另外,我还没试过,但你可以试试this script。