2011-08-15 12 views

答えて

12

既存の再定義、新しいオブジェクトを定義して作成することができます。そこから

import pdb 
pdb.set_trace() 

を使用し、pdbであなたの指先で通訳のフルパワーを持っていますモジュールの変更と再読み込みなど。構文はgdbと同じです。 ipythonを使用している場合は、ipdbが良い選択かもしれません。あるいは、ipythonの魔法の機能%debugでデバッガを自動的に起動することもできます。

+0

幸いですが、IPythonを使用してpdbを使用することをお勧めします(これは構文の強調表示、例外の自動デバッグなど)(http://ipython.org/ipython-doc/stable/interactive /tutorial.html#debugging)。 – EOL

1

名前に新しい値を付けることはできますが、古い値を参照する場所が残っている可能性があります。 Pythonシェルで以下のセッションを確認してください:

>>> def foo(): print 'Foo' 
... 
>>> bar = foo 
>>> 
>>> foo() 
Foo 
>>> bar() 
Foo 
>>> 
>>> def foo(): print 'Bar' 
... 
>>> foo() 
Bar 
>>> bar() 
Foo 
>>> 
>>> def call(): foo() 
... 
>>> call() 
Bar 
>>> 
>>> 
>>> def foo(): print 'Foo reloaded!' 
... 
>>> 
>>> foo() 
Foo reloaded! 
>>> bar() 
Foo 
>>> 
>>> call() 
Foo reloaded! 
>>> 

機能callは新しいfooを意味するが、barは古いfooの値を割り当てられていたし、あなたが名前fooを再利用するときには変更されません。

編集者のサポートを依頼しましたか? Python-mode in Emacsは、「劣等パイソンプロセス」を実行することができます。このプロセスには、コードブロックを送信する際にコードブロックを送信することができます。あるいは、上記のように、Pythonシェルでこれを直接行うこともできます。

関連する問題