python - ipdb:按需通过附加代码进行跟踪 | Python

标签 python ipdb

我使用import ipdb;ipdb.set_trace()

有时,在使用 set_trace 进行调试时,我想验证框架/源代码之外的某些方法(使用我的参数调用它,并查看它在内部的工作原理)。代码中尚未使用方法,因此无法跳转。

诸如此类:

def do_a(): ...
def do_b(): ...
def do_c(): ...

def do_d():
  do_a()
  import ipdb;ipdb.set_trace()

# 这里:想要在 do_b 之前检查 do_c,但不仅仅是从 do_c 获取结果(这很容易),而是跟踪整个 do_c 并保持当前帧中的位置。

  do_b()

debug 命令,但不能使用函数,我希望交互式 shell。

解决方法非常耗时:停止调试器,修改代码(在示例中添加 do_c())并重新启动调试器)

最佳答案

不确定这是否有效,因为这是非常罕见的用例。

使用断点设置命令设置断点,例如tbreak:

http://georgejhunt.com/olpc/pydebug/pydebug/ipdb.html

  tbreak do_b   # Might or might not work

然后执行do_b,它应该会到达断点

  do_b()

关于python - ipdb:按需通过附加代码进行跟踪 | Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591313/

相关文章:

Python 装饰器访问自身

python - ipython事后调试: scope of outer function

visual-studio - 可以停止由 VIsual Studio 2015 生成 *.ipdb *.iobj 文件吗?

python - IPython (Jupyter) 笔记本中的交互式调试

python - 如何让用户输入列表?

python - 使用 if 语句连接字符串,例如。 : if 5 "> 4":

python - 使用字典的多级 QTreeView

python - 从数组中形成成对的非连续元素

python - 在 Tornado 的 ioloop 中出现异常时启动 pdb

python - 在代码中没有显式断点的情况下将 ipdb 与 emacs 的 gud 一起使用