2013-05-10 11 views
5

Pythonで数千のポストがありますが、探しているものが見つかりません....ビジュアルデバッガです。例:Python Visual Debugger

[email protected] ~ $ 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のステップスルーのような)言語デバッガです。

+1

これはLightTable(http://www.lighttable.com/)が行うことを目的としていると思います。まあそれはまだ動作します。 –

+1

ちょうど私の答えにWinpdbに関する情報を追加したヘッドアップ。 (私が答えを編集する時にあなたに通知するかどうかは分かりません)。Winpdbは、Python用の優れたフリーのビジュアルデバッガです。私が最初に答えたときになぜそれについて忘れてしまったのか分かりません。おそらく私はコモドとIDEAですべての時間を過ごしていたからでしょう。 :-) –

答えて

2

が呼び出された後ではなく、クラスが定義されているため、現在のpdb.set_trace()呼び出しが行われています。あなたはの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) 

の内側にあなたのpdb.set_trace()の呼び出しを移動する場合は、PDBにあなただけのprint x, yを入力して、値を取得することができます。

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) 
8

PDBデバッグが楽しいようには見えません。 。なぜあなたがそれを好まないのか分かります。

幸運にも、です。いくつかの視覚的なPythonデバッガーがあります。私が最も頻繁に使用する2つは商用製品ですが、どちらもコストの価値があります。彼らはKomodo IDEIntelliJ IDEAです。これらは、Pythonに加えて他の多くの言語をサポートするマルチ言語IDEです。 PyCharmと呼ばれるIDEAのPython専用バージョンもあります。

また、無料の便利なオプションWinpdbもあります。使い方は簡単です。一度インストールして開くと、ファイル/起動を使用して.pyファイルのフルパスを入力すると、デバッグを開始できます。

これらの製品はすべてマルチプラットフォームですが、Windowsを使用している場合は、MicrosoftのPython Tools for Visual Studioがあります。このパッケージは、市販のVisual Studio 2015またはVisual Studio 2015の無料Community Editionにインストールできます。

ここでは、Winpdb、Komodo、IDEAのコードのスクリーンショットを紹介します。私は、各__init__機能に足を踏み入れ:あなたは、私が使用したコードのフォントが気に入らない場合は

enter image description here  

enter image description here  

enter image description here

は心配しないでください。それは私の個人的な設定です。そしてもちろん、通常の使用では画面があまりにも窮屈ではありません。スクリーンショットに収まるように小さくしました。

これらのビジュアルデバッガを強くお勧めします.1回のキーストロークでコードをステップ実行して、変数が変わるのを見ることができるのは素晴らしいことです。

0

私はWingWareのWingIDE(私はバージョン4.x Proを持っています)を使用しています。私はデバッグにしか使用していませんが、それは私によく役立ちました - 確かに私はパワーユーザーではありません。私はブレークポイントを設定し、行単位でステップを進めます。

関連する問題