在Python调试器pdb中,如何在不终止调试会话的情况下退出交互模式

Ray*_*Ray 21 python debugging pdb

使用python 3.5.1

当我使用python调试器模块运行脚本时:

  [home]# python -m pdb myscript.py
Run Code Online (Sandbox Code Playgroud)

这将启动调试会话:

  > /somepath/to/myscript.py(1)<module>()
  -> import os
  (Pdb) 
Run Code Online (Sandbox Code Playgroud)

如果我想从调试会话中进入交互式终端,我可以发出interact命令:

(Pdb) interact
*interactive*
>>>
Run Code Online (Sandbox Code Playgroud)

现在我可以用个代码交互,就好像我是在一个运行Python交互模式,能够访问任何功能或变量在我输入的时间调试器中运行该脚本的范围interact模式.

当我发出退出交互模式的命令(继续调试)时,它会终止整个调试会话:

>>> exit()
The program exited via sys.exit(). Exit status: None
....long nasty stack trace here....

[home]#
Run Code Online (Sandbox Code Playgroud)

我也试过quit(),它也终止了调试器.

如何在interact不终止整个调试会话的情况下退出模式?这甚至可能吗?

理想情况下,我想在我离开的时候返回调试模式,这样我就可以继续单步调试代码了.

Luk*_*raf 23

EOF通过按Ctrl+ 发送D应该工作:

$ python -m pdb myscript.py
> .../myscript.py(1)<module>()
-> import os
(Pdb) import code
(Pdb) code.interact()
Python 2.7.11 (default, Dec 27 2015, 01:48:39)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> <CTRL-D>
(Pdb) c
...
Run Code Online (Sandbox Code Playgroud)

  • 额外提示:`CTRL-D`对于在漫长的一天工作结束时关闭数十个开放终端/ SSH会话也非常方便:它(通常)会立即关闭终端模拟器中的该选项卡,**除**如果命令行上仍有半类型命令或前台运行程序. (3认同)

alp*_*989 5

如果您使用ipdb,并且在上Windows/Windows10,则应使用Cntrl-Z> Return退出交互式外壳。

经测试,在ipython/python 3.5ipdbpdb


Syn*_*ist 5

https://github.com/jupyter/notebook/issues/3603#issuecomment-747392494

from pandas.io.clipboard import copy; copy("\x04")

将 Ctrl-D 复制到剪贴板,然后您可以粘贴并输入。