使用 Python 调试器 (ipdb) 时出现 NameError
NameError when using the Python debugger (ipdb)
我正在尝试更加熟练地使用调试器,并且正在按照 http://www.onlamp.com/pub/a/python/2005/09/01/debugger.html 中给出的示例进行操作。我目前正在尝试这个脚本:
#!/usr/bin/env python
import ipdb
def test_debugger(some_int):
print "start some int>>", some_int
return_int = 10 / some_int
print "end some_int>>", some_int
return return_int
if __name__ == "__main__":
ipdb.run("test_debugger(0)")
但是,如果我 运行 它并尝试按 n
,我会得到 NameError
:
> <string>(1)<module>()
ipdb> n
NameError: "name 'test_debugger' is not defined"
据我从https://docs.python.org/2/library/pdb.html#pdb.run了解到,应该可以使用n(ext)
命令来运行直到出现真正的bug。有人可以解释这里发生了什么吗?
根据您提到的文档,解释链接到 https://docs.python.org/2/library/functions.html#eval。
您对 ipdb.run() 的调用似乎没有提供 globals
或 locals
字典,因此 test_debugger
未在 [= 的上下文中定义13=].
你可以让它像这样工作:
ipdb.run("test_debugger(0)", {'test_debugger': test_debugger})
我正在尝试更加熟练地使用调试器,并且正在按照 http://www.onlamp.com/pub/a/python/2005/09/01/debugger.html 中给出的示例进行操作。我目前正在尝试这个脚本:
#!/usr/bin/env python
import ipdb
def test_debugger(some_int):
print "start some int>>", some_int
return_int = 10 / some_int
print "end some_int>>", some_int
return return_int
if __name__ == "__main__":
ipdb.run("test_debugger(0)")
但是,如果我 运行 它并尝试按 n
,我会得到 NameError
:
> <string>(1)<module>()
ipdb> n
NameError: "name 'test_debugger' is not defined"
据我从https://docs.python.org/2/library/pdb.html#pdb.run了解到,应该可以使用n(ext)
命令来运行直到出现真正的bug。有人可以解释这里发生了什么吗?
根据您提到的文档,解释链接到 https://docs.python.org/2/library/functions.html#eval。
您对 ipdb.run() 的调用似乎没有提供 globals
或 locals
字典,因此 test_debugger
未在 [= 的上下文中定义13=].
你可以让它像这样工作:
ipdb.run("test_debugger(0)", {'test_debugger': test_debugger})