Python PDB 与命令输出不一致 - 下一条语句未输出

Posted

技术标签:

【中文标题】Python PDB 与命令输出不一致 - 下一条语句未输出【英文标题】:Python PDB inconsistency with command outputs - next statement not outputting 【发布时间】:2016-05-11 16:29:36 【问题描述】:

我正在尝试单步执行我一年多前编写的一些代码的 python 脚本。我记得的方式是,当您编写 pdb.set_trace() 行时,程序将在该点停止执行并打印将要执行的下一行。输入 'n' 或 's' 将使执行前进一行(并且可能步入一个函数,与我的问题不太相关)并打印下一行以再次执行。

现在,我有一个程序“example1.py”,它没有打印下一条要执行的语句。我只是得到如下输出

 ./example1.py
 > /home/some/example1.py(44)create()
 (Pdb) s
 > /home/some/example1.py(45)create()
 (Pdb) s
 --Call--
 > /home/some/example1.py(90)parse()

但是当我用一个不同的 python 程序“example2.py”尝试同样的事情时,我最近编写的一个我得到了我期望的输出(下一个要执行的语句。)

> /home/some/example2.py(86)random_update()
-> DATE_LIMIT=1
(Pdb) n
> /home/some/example2.py(87)random_update()
-> FILE_LIMIT=120
(Pdb) n
> /home/some/example2.py(89)random_update()
-> n_dates=0

我不知道这可能是什么原因。 import 语句会干扰 pdb 的执行吗?

更新: 所以我在切换到我的主目录之外的目录之前设置了我的跟踪断点。当我这样做时,我得到了我期望的输出。我注意到该目录的组所有者是 root,所以我将其更改为我的用户。这并没有解决我的问题,但现在我知道它与程序执行位置有关。

【问题讨论】:

【参考方案1】:

我想通了。如果我在将当前目录更改为程序所在目录的行之前设置我的跟踪,我得到了我期望的输出。在此目录更改后设置跟踪后,我不再获得语句执行输出。

为了解决这个问题,我使用完整路径执行了程序

python /home/name/home/some/example1.py

【讨论】:

以上是关于Python PDB 与命令输出不一致 - 下一条语句未输出的主要内容,如果未能解决你的问题,请参考以下文章

如何让CMD执行一条命令后等待一定时间再执行下一条命令

Forge - python脚本和终端命令的输出不一致

python_pdb断点调试常用命令

python 命令行断点调试pdb的应用

pdb-不需要IDE也能调试

PDB 常用命令