我喜欢在Python 解释器中测试函数。当我想查看的不仅仅是返回值和副作用时,是否可以在Python 解释器中调试函数?
如果是这样,您能否展示基本的调试器操作(使用参数启动函数、设置断点、下一步、单步执行、观察变量)?如果不是,您将如何以另一种方式调试函数?
关键是,我只想调试一个将提供参数的特定函数。我不想调试整个模块代码。
谢谢你的建议
我喜欢在Python 解释器中测试函数。当我想查看的不仅仅是返回值和副作用时,是否可以在Python 解释器中调试函数?
如果是这样,您能否展示基本的调试器操作(使用参数启动函数、设置断点、下一步、单步执行、观察变量)?如果不是,您将如何以另一种方式调试函数?
关键是,我只想调试一个将提供参数的特定函数。我不想调试整个模块代码。
谢谢你的建议
如果你想调试特定的功能,你可以使用这个 -
>>> import pdb
>>> import yourmodule
>>> pdb.run('yourmodule.foo()')
通过命令行。pdb.set_trace()
应该添加到你的函数中以打破那里。
可以在此处查看有关 pdb 的更多信息 - http://docs.python.org/library/pdb.html
请参阅 pdb 模块。插入代码:
import pdb
pdb.set_trace()
...创建一个断点。
code-to-debug 不需要修改为包含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
使用调试器命令 step-into ( s
)、next ( n
) 和 continue ( )进行调试的解释器会话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>
提供特定于给定命令的帮助。