15

Python インタープリターで関数をテストするのが好きです。戻り値と副作用以上のものを見たい場合、 Python インタープリターで関数をデバッグすることは可能ですか?

もしそうなら、基本的なデバッガ操作(引数を指定して関数を起動する、ブレークポイントを設定する、次のステップ、ステップインする、変数を監視する)を示していただけますか?そうでない場合、別の方法で関数をどのようにデバッグしますか?

ポイントは、引数が提供される特定の関数のみをデバッグしたいということです。モジュールコード全体をデバッグしたくありません。

アドバイスありがとう

4

3 に答える 3

12

特定の機能をデバッグしたい場合は、これを使用できます-

>>> import pdb
>>> import yourmodule
>>> pdb.run('yourmodule.foo()')

コマンドラインで。pdb.set_trace()そこで中断するには、関数に追加する必要があります。

pdb の詳細については、http: //docs.python.org/library/pdb.html を参照してください。

于 2012-04-24T10:31:58.223 に答える
7

pdb モジュールを参照してください。コードに挿入:

import pdb
pdb.set_trace()

... ブレークポイントを作成します。

于 2012-04-24T10:26:00.810 に答える
4

デバッグするコードを変更して を含める必要はありませんpdb.set_trace()。その呼び出しは、デバッグするコードの直前にインタープリターで直接行うことができます。

>>> import pdb
>>> pdb.set_trace(); <code-to-debug>

たとえばtest_script.py、次のコードで指定します。

def some_func(text):
    print 'Given text is {}'.format(repr(text))
    for index,char in enumerate(text):
        print ' '*index, char

some_funcデバッガー コマンドのステップイン ( s)、次へ ( )、nおよび続行 ( ) を使用してデバッグするインタープリター セッションは、次のcようになります。

>>> import pdb
>>> import test_script
>>> pdb.set_trace(); test_script.some_func('hello')
--Call--
> c:\src\test_script.py(1)some_func()
-> def some_func(text):
(Pdb) s
> c:\src\test_script.py(2)some_func()
-> print 'Given text is {}'.format(repr(text))
(Pdb) n
Given text is 'hello'
> c:\src\test_script.py(3)some_func()
-> for index,char in enumerate(text):
(Pdb) c
 h
  e
   l
    l
     o
>>> 

pdbデバッガーの使用方法の詳細については、モジュールのドキュメントを参照してください: http://docs.python.org/library/pdb.html

さらに、デバッガーを使用している間、helpコマンドはコマンドの優れたリストを提供し、help <command>特定のコマンドに固有のヘルプを提供します。

于 2017-07-20T15:40:54.317 に答える