python - 为什么在 python 脚本中更改目录会影响 pdb 中的显示上下文?

标签 python python-2.7 pdb

在脚本中更改目录似乎会阻止 pdb 在单步执行代码时显示当前行。比较下面的脚本和输出。

import os
import pdb
os.chdir('..')
print 'hello'
pdb.set_trace()
print 'world'

输出:

hello
/Users/username/test.py(6)<module>()
(pdb)

相比之下,

import os
import pdb
print 'hello'
pdb.set_trace()
print 'world'

输出:

hello
/Users/username/test.py(5)<module>()
-> print 'world'
(pdb)

为什么会发生这种情况,是否有办法阻止它(即让 pdb 使用 os.chdir 继续打印脚本中的当前行) ?

最佳答案

此问题的一个原因是从当前目录启动模块/脚本。例如,如果我使用以下命令从 shell 启动我的脚本:

$ ./myscript.py

然后 myscript 使用 os.chdir() 更改当前工作目录 pdb 将在每次停止时停止打印当前行(尽管 list 仍然有效)。另一方面,如果您在像这样运行脚本之前扩展脚本的路径:

$ /Users/me/myproject/myscript.py

然后pdb就不再迷茫了,每次停止都会打印line source

关于python - 为什么在 python 脚本中更改目录会影响 pdb 中的显示上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856105/

相关文章:

python - 在 PIL 中打开 base64 字符串时出现奇怪的 IOError

python - 在 python 调试器 (pdb) 中为符号赋值

python - 什么Python模式可以用于并行化?

google-app-engine - GAE 1.8.8更新后,不再显示来自Google Cloud Storage的图像

python - numpy 排序奇怪的行为

c++ - 编译器会为相同的源生成不同的 .pdb 文件吗

python - 如何从 Python 调试器 (pdb) 输入

python - 如何在 Ipython 5.0.0 中设置特定的 vim 绑定(bind)

python - panda groupby agg 和计算函数一起

python - 如果涉及最后一行,QPlainTextEdit 中的取消缩进功能会导致段错误