你能通过Python代码来帮助debugging问题吗?

在java / c#中,您可以轻松地通过代码来追踪可能出错的地方,而且IDE使得这个过程非常友好。

你能跟踪类似的Python代码吗?

是! 有一个名为pdb的Pythondebugging器只是为了做到这一点!

您可以使用pdb myscript.pypython -m pdb myscript.py通过pdb启动Python程序。

您可以发出几条命令,这些命令logging在pdb页面上。

一些有用的记住是:

  • b :设置一个断点
  • c :继续debugging,直到你到达一个断点
  • s :遍历代码
  • n :转到下一行代码
  • l :列出当前文件的源代码(默认:11行,包括正在执行的行)
  • u :导航一个堆栈帧
  • d :向下导航一个堆栈帧
  • p :在当前上下文中打印expression式的值

如果你不想使用命令行debugging器,一些像Pydev这样的IDE有一个GUIdebugging器。

python中有一个叫做“pdb”的模块。 在你的python脚本的顶部

 import pdb pdb.set_trace() 

你将进入debugging模式。 您可以使用's'来执行,'n'跟随下一行,类似于您使用'gdb'debugging器执行的操作。

通过使用Python交互式debugging器'pdb'

第一步是让Python解释器进入debugging模式。

A.从命令行

从命令行运行python解释器的最直接的方法

 $ python -m pdb scriptName.py > .../pdb_script.py(7)<module>() -> """ (Pdb) 

B.在口译员内

开发模块的早期版本,并更迭迭地进行实验。

 $ python Python 2.7 (r27:82508, Jul 3 2010, 21:12:11) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import pdb_script >>> import pdb >>> pdb.run('pdb_script.MyObj(5).go()') > <string>(1)<module>() (Pdb) 

C.从您的程序中

对于一个大项目和长时间运行的模块,可以使用import pdbset_trace()来启动程序内部的debugging:

 #!/usr/bin/env python # encoding: utf-8 # import pdb class MyObj(object): count = 5 def __init__(self): self.count= 9 def go(self): for i in range(self.count): pdb.set_trace() print i return if __name__ == '__main__': MyObj(5).go() 

逐步debugging进入更多的内部

  1. “n”执行下一个语句(下一个)

  2. 重复上一个debugging命令…用ENTER键

  3. 退出所有…用“q” (退出)

  4. 用“p”打印variables值(打印)

    a) pa

  5. closures(Pdb)提示…用“c” (继续)

  6. 看到你在哪里…用“l” (列表)

  7. 步入子程序…用“s” (步入)

  8. 继续…但是直到当前子程序结束…用“r” (返回)

  9. 分配一个新的值

    a) !b =“B”

  10. 设置一个断点

    a) 打破床单编号

    b) 打破function名称

    c) 中断文件名:linenumber

  11. 临时断点

    a) tbreak linenumber

  12. 条件断点

    一) 打破linenumber,条件

注意:**所有这些命令都应该从** pdb执行

有关详细的知识,请参阅: –

https://pymotw.com/2/pdb/

https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/

如果你来自Java / C#背景,我想你最好的select是使用Eclipse与Pydev 。 这为您提供了一个内置debugging器的function齐全的IDE。我也使用它与django。

如果你想要一个集成了debugging器的IDE,可以试试PyScripter 。

通过Python代码以编程方式进行步进和追踪也是可能的(也很简单!)。 查看sys.settrace()文档了解更多细节。 另外这里是一个教程,让你开始。

Visual Studio与PTVS可能是您的select: http : //www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx

https://wiki.python.org/moin/PythonDebuggingTools

pudb是一个很好的替代pdb的替代品

你可以看看pythondebugging器 ,它只是通过一个GUI来完成你正在寻找的东西