我正在尝试一年多前写的一些代码的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的执行吗?
UPDATE:所以我在更改到主目录之外的目录之前设置了跟踪断点。当我这样做时,我得到了我期望的输出。我注意到这个目录的组所有者是root,所以我将其更改为我的用户。这并没有解决我的问题,但现在我知道它与程序执行位置有关。
1条答案
按热度按时间oipij1gg1#
我想明白了如果我在将当前目录更改为程序不位于的目录的行之前设置跟踪,我将得到预期的输出。一旦我在这个目录更改之后设置了跟踪,我就不再获得语句执行输出。
为了解决这个问题,我执行了一个完整路径的程序