Python 可视化调试器

标签 python debugging

<分区>

我知道有上千篇关于 Python 调试的帖子,但我找不到我要找的东西……可视化调试器。例如:

one@localhost ~ $ cat duh.py    
import pdb
class Coordinate(object):
     pdb.set_trace()
     def __init__(self, x, y):
         self.x = x
         self.y = y
     def __repr__(self):
         return "Coord: " + str(self.__dict__)
def add(a, b):
     return Coordinate(a.x + b.x, a.y + b.y)
def sub(a, b):
    return Coordinate(a.x - b.x, a.y - b.y)

one = Coordinate(100,200)
two = Coordinate(300,200)

add(one, two)

我想查看实际使用的值。而不是看到 def __init__(self, x, y): 我想看到 def __init__(self, 100, 200):

> /home/one/duh.py(14)<module>()
-> one = Coordinate(100,200)
(Pdb) s
--Call--
> /home/one/duh.py(4)__init__()
-> def __init__(self, x, y):
(Pdb) s
> /home/one/duh.py(5)__init__()
-> self.x = x
(Pdb) s
> /home/one/duh.py(6)__init__()
-> self.y = y
(Pdb) s
--Return--
> /home/one/duh.py(6)__init__()->None
-> self.y = y

我完全不习惯对解释器内部发生的事情视而不见,我真的很想像其他脚本语言调试器一样了解内部发生的事情(如 JavaScript 步进)。

最佳答案

pdb 调试看起来并不有趣。我明白你为什么不喜欢它。

幸运的是, 有一些可视化的 Python 调试器。我最常使用的两个是商业产品,但它们都物有所值。他们是Komodo IDEIntelliJ IDEA .这些是多语言 IDE,支持除 Python 之外的许多其他语言。还有一个名为 PyCharm 的 IDEA 纯 Python 版本.

还有一个很棒的免费选项,Winpdb .它易于使用:安装并打开后,使用 File/Launch 并输入 .py 文件的完整路径,然后就可以开始调试了。

这些产品都是多平台的,但如果您使用的是 Windows,另一个免费选项是 Microsoft 的 Python Tools for Visual Studio .您可以将其安装到商业版 Visual Studio 2015 或免费的 Visual Studio 2015 社区版中。

为了给您一个想法,这里是您的代码在 Winpdb、Komodo 和 IDEA 中的屏幕截图。我进入了每个中的 __init__ 函数:

enter image description here

enter image description here

enter image description here

如果您不喜欢我使用的代码字体,请不要担心;那只是我的个人设置。当然,在正常使用中,屏幕并没有那么局促;我将其缩小以适合屏幕截图。

我强烈推荐这些可视化调试器中的任何一个 - 能够通过一次击键单步执行代码并观察变量的变化真是太棒了。

关于Python 可视化调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473278/

相关文章:

python - 如何在交叉表 Pandas 中获取总计?

python - 奇怪的 numpy 行为,这里发生了什么?

c# - WPF应用程序OnStartup出现System.IO.FileLoadException的原因

python - python 中的 Doc、rtf 和 txt 阅读器

Python all() 和 bool() 空案例?

python - 如何匹配两个数组的元素并返回一个值

c# - 如何找到 "out of range"异常的原因?

python - 得到一个似乎没有多大意义的错误。

delphi - 如何忽略/禁用用于调试 Delphi 6 DLL 的主机 EXE 中的 INT 01 和 INT 03 指令?

php - PHP解析/语法错误;以及如何解决它们