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 与命令输出不一致 - 下一条语句未输出的主要内容,如果未能解决你的问题,请参考以下文章