【问题标题】:NameError when using the Python debugger (ipdb)使用 Python 调试器 (ipdb) 时出现 NameError
【发布时间】:2017-02-14 12:02:25
【问题描述】:

我正在尝试更熟练地使用调试器,并遵循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) 命令运行直到实际出现错误。有人可以解释这里发生了什么吗?

【问题讨论】:

  • pdbipdb有区别吗?

标签: python pdb ipdb


【解决方案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})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2015-09-22
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多