2017-02-14 72 views
0

我想要更熟练地使用调试器,并遵循http://www.onlamp.com/pub/a/python/2005/09/01/debugger.html中给出的示例。目前,我想要这个脚本:使用Python调试器时发生NameError(ipdb)

#!/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)命令运行,直到实际的错误。有人可以解释这里发生了什么吗?

+1

有'pdb'和'ipdb'之间的差异? – WhatsThePoint

回答

1

从您提到的文档中,解释链接到https://docs.python.org/2/library/functions.html#eval

看来,您的来电ipdb.run()不提供globalslocals字典,所以test_debugger是不是在run上下文中定义。

你可以把它像这样工作的:

ipdb.run("test_debugger(0)", {'test_debugger': test_debugger})