python - 为在 Python 中使用 ipdb 进行调试而定义的便捷函数

标签 python debugging pdb ipdb

在我的 Python 脚本的顶部,我定义了以下用于使用 ipdb 进行调试的便捷函数:

def bp():
    import ipdb
    ipdb.set_trace()

所以当我想调试某个点时我可以这样写:

bp() 

不用写

import ipdb; ipdb.set_trace()

(除非需要,否则我不希望导入 ipdb)。

这种方法的问题在于,当我进入 pdb 时,我进入了函数 bp(),所以我必须按“u”键才能转到代码的相关部分:

> /path/to/script.py(15)bp()
      14     import ipdb
 ---> 15     ipdb.set_trace()
      16 

ipdb> u

有没有一种方法我可以采用类似的方法,但直接进入代码的相关部分?

最佳答案

在调用 ipdb.set_trace() 定义的断点中更改事件帧的一种方法如下:

def bp():
    import ipdb
    import sys
    ipdb.set_trace(sys._getframe().f_back)

对于具有简单重命名的 pdb,相同的方法似乎不起作用,但以下方法似乎有效:

def bp():
    from pdb import Pdb
    import sys
    Pdb().set_trace(sys._getframe().f_back)

我在 python 3.5 中测试过这个,但在其他 python 版本中没有测试过。

关于python - 为在 Python 中使用 ipdb 进行调试而定义的便捷函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920112/

相关文章:

python - 使用 python 3.4.3 时无法导入 gspread

visual-studio-2008 - 调试命令(step over/into)导致未处理的异常

javascript - 在 Chrome 中拦截对 console.log 的调用

python - 在 Python 调试器 pdb 中,如何在不终止调试 session 的情况下退出交互模式

python - ipython 0.11 异常仅在退出 pdb 后可见

python - 我怎么弄乱了python pdb

python - mhtml 文件的标签及其含义的某处是否有主列表?

python - python 变量的 ruby​​ 风格条件设置

python - 是否有用于创建类似桌面的 GUI 端到端应用程序的 Python Web 应用程序框架?

php - PHP解析/语法错误;以及如何解决它们