我在这里显然有些不理解。我正在尝试在Docker容器内交互式运行pdb调试器。
以下是一些代码:
Dockerfile:
FROM python:3.6
ENV PROJECT_DIR=/opt/foo
WORKDIR $PROJECT_DIR
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "foo.py"]
foo.py:
def hello_world():
print("hello world")
if __name__ == '__main__':
#import pdb; pdb.set_trace()
hello_world()
如果我运行
docker build -t foo .
,然后运行docker run foo
,它会按预期输出“hello world”。但是,如果我取消注释上面的
pdb.set_trace()
调用,然后再试一次,我会收到以下错误:/opt/foo/foo.py(8)<module>()
-> hello_world()
(Pdb)
Traceback (most recent call last):
File "foo.py", line 8, in <module>
hello_world()
File "foo.py", line 8, in <module>
hello_world()
File "/usr/local/lib/python3.6/bdb.py", line 51, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/local/lib/python3.6/bdb.py", line 70, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
我哪里没有理解?
编辑: 在调试Python时出现BbdQuit错误不是重复问题。
正如@soundstripe所正确指出的那样,我的问题是在Docker中未提供pdb的交互式访问。