我喜欢在Python解释器中测试函数。当我想查看不仅仅是返回值和副作用时,是否可以在Python解释器中调试函数?
如果可以,请展示基本的调试器操作(使用参数启动函数,设置断点,下一步,步入,观察变量)? 如果不行,你会怎样调试函数呢?
重点是,我只想调试提供参数的特定函数。我不想调试整个模块代码。
谢谢您的建议。
我喜欢在Python解释器中测试函数。当我想查看不仅仅是返回值和副作用时,是否可以在Python解释器中调试函数?
如果可以,请展示基本的调试器操作(使用参数启动函数,设置断点,下一步,步入,观察变量)? 如果不行,你会怎样调试函数呢?
重点是,我只想调试提供参数的特定函数。我不想调试整个模块代码。
谢谢您的建议。
如果你想要调试特定的函数,可以使用以下方法 -
>>> import pdb
>>> import yourmodule
>>> pdb.run('yourmodule.foo()')
在命令行中使用pdb.set_trace()
在您的函数中添加以在该位置中断。
有关pdb的更多信息,请参见此处 - http://docs.python.org/library/pdb.html
pdb.set_trace()
。干得好,谢谢。我之前没有理解它。 - xralfimport pdb
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
使用调试器命令step-into(s
)、next(n
)和continue(c
),进行解释器会话以调试some_func
,看起来像这样:
>>> 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>
则提供了特定命令的帮助。
pdb
吗? - hochlpdb
是正确的选择,请阅读模块描述。 - hochl