How to quit ipdb while in post-mortem debugging?

匿名 (未验证) 提交于 2019-12-03 01:25:01

问题:

I like to inspect error in a Python script by using:

$ python3 -m pdb my_script.py 

This drops me into a pdb prompt from where I can c continue the execution, and when it hits error, I can inspect the variables and then q quit the script execution to get back to my shell.

I tried the same with iPython debugger module, since it is more colorful:

$ python3 -m ipdb my_script.py 

However, I am not able to quit the debugger once I am done inspecting the error. Using the q quit command just keeps switching it between re-executing the script and post-mortem mode:

$ python3 -m ipdb my_script.py ipdb> c Uncaught exception. Entering post mortem debugging Running 'cont' or 'step' will restart the program ipdb> Inspect some variables at this point ipdb> q Post mortem debugger finished. The my_script.py will be restarted ipdb> q Uncaught exception. Entering post mortem debugging Running 'cont' or 'step' will restart the program ipdb> q Post mortem debugger finished. The my_script.py will be restarted ipdb> q Uncaught exception. Entering post mortem debugging Running 'cont' or 'step' will restart the program ipdb> q Post mortem debugger finished. The my_script.py will be restarted ipdb> q Uncaught exception. Entering post mortem debugging Running 'cont' or 'step' will restart the program 

How to quit this debugger?

回答1:

This was a bug in IPython 5.1. It was fixed in this pull request and is no longer an issue from IPython 5.2 and onwards. You can now use q, quit(), or Ctrl+d to exit the debugger.



回答2:

As the user @ffeast commented, there is an open ipdb issue, and a few workarounds suggested. For me these worked well:

  • press ctrl+z
  • execute ipdb> import os; os._exit(1)


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!