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

2024-06-28 19:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python3.5.1

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

  [home]# python -m pdb myscript.py

这将启动调试会话:

  > /somepath/to/myscript.py(1)<module>()
  -> import os
  (Pdb) 

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

(Pdb) interact
*interactive*
>>>

现在,我可以像在运行python交互模式中一样与th代码交互,访问进入interact模式时在调试器中运行的脚本范围内的任何函数或变量。

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

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

[home]#

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

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

理想情况下,我希望在离开时返回到调试模式,以便继续单步执行代码。


Tags: 模块代码py命令脚本homeexit模式
3条回答

对于那些在jupyter笔记本中寻找解决方案的人(只是还不想学习emacs)。我找到了一个为我工作的人。

在linux shell中:

echo ^D | xclip -selection clipboard 

但是,键入^D不是字符而是ctrl-v ctrl-d。。。

如果您使用的是ipdb,并且在Windows/Windows10上,则应该使用Cntrl-Z>;Return来脱离交互式shell。

ipython/python 3.5ipdbpdb中测试

通过按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
...

相关问题 更多 >