Depurador Visual em Python [fechado]

Eu sei que existem milhares de posts sobre depuração em Python, mas eu não consigo encontrar o que estou procurando....um depurador visual. Por exemplo:

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)

quero ver os valores que estão a ser utilizados. Em vez de ver def __init__(self, x, y): Eu gostaria de ver 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

Eu não estou totalmente acostumado a ser cego no que está acontecendo dentro do interpretador e realmente gostaria de ver o que está acontecendo nos internos, como outros depuradores de linguagem de script (como JavaScript step-through).

Author: halfer, 2013-05-10

4 answers

A depuração do pdb não parece divertida. Percebo porque não gostas.

Felizmente, existemalguns depuradores de Python visuais por aí. Os dois que eu uso mais frequentemente são produtos comerciais, mas ambos valem bem o custo. Eles são Komodo IDE e IntelliJ IDEA . Estes são IDEs multi-linguagem que suportam muitos outros idiomas, além do Python. Há também uma versão do IDEA só para Python chamada PyCharm .

Também há uma grande opção livre, Winpdb . É fácil de usar: uma vez que você instale e abra, use arquivo/lançamento e digite o caminho completo para o seu arquivo .py, e então você pode começar a depuração.

Estes produtos são todos multiplataforma, mas se estiver no Windows outra opção livre é a Microsoft Python Tools for Visual Studio . Você pode instalar isso no Visual Studio comercial 2015 ou na edição comunitária gratuita do Visual Studio 2015.

Para lhe dar uma ideia, aqui estão imagens do seu código do Winpdb, Komodo e IDEA. Eu entrei na função __init__ em cada:

enter image description here  

enter image description here  

enter image description here

Não se preocupe se não gostar da fonte de código que usei, é só o meu ambiente pessoal. E, claro, em uso normal a tela não é tão apertado; eu fiz pequena para caber em uma imagem. Eu recomendo vivamente qualquer um destes depuradores visuais. é óptimo poder passar por aqui. o seu código com uma única tecla e ver as variáveis a mudar à medida que vai.
 9
Author: Michael Geary, 2017-02-23 04:46:43

O seu actual APO.a chamada set_ Trace () está a acontecer à medida que a classe está a ser definida, em vez de init ser chamada. Se moveres o teu pdb.set_ trace () call inside init

import pdb
class Coordinate(object):
     def __init__(self, x, y):
          pdb.set_trace()

          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)

Então no pdb você pode apenas digitar print x, y e obter os valores:

C:\Users\randlet>python duh.py
> c:\users\randlet\duh.py(6)__init__()
-> self.x = x
(Pdb) print x, y
100 200
(Pdb) c
> c:\users\randlet\duh.py(6)__init__()
-> self.x = x
(Pdb) print x, y
300 200
(Pdb) n
> c:\users\randlet\duh.py(7)__init__()
-> self.y = y
(Pdb) n
--Return--
> c:\users\randlet\duh.py(7)__init__()->None
-> self.y = y
(Pdb) n
> c:\users\randlet\duh.py(18)<module>()
-> add(one, two)
(Pdb) print one, two
Coord: {'y': 200, 'x': 100} Coord: {'y': 200, 'x': 300}
(Pdb) s
--Call--
> c:\users\randlet\duh.py(10)add()
-> def add(a, b):
(Pdb) print a, b
Coord: {'y': 200, 'x': 100} Coord: {'y': 200, 'x': 300}
(Pdb)
 2
Author: randlet, 2013-05-10 00:43:16

Tenho usado (desde janeiro de 2011) WingIDE por WingWare (tenho a versão 4.x Pro). Eu só o uso para depuração, ele me serviu bem - admito que eu não sou um usuário de energia. Estabeleço pontos de paragem, passo linha a linha, etc.

 0
Author: Radim Cernej, 2017-02-02 03:13:14

O depurador Visual Python para os cadernos de Jupyter descritos Aqui pode ser interessante.
(Disclaimer: i'm the lead developer)

 0
Author: David Taieb, 2018-03-12 13:22:10