Python 在调试器中设置sys.exit()
我的节目出人意料地结束了。当我通过pdb运行它时,它以以下内容结束:Python 在调试器中设置sys.exit(),python,pdb,Python,Pdb,我的节目出人意料地结束了。当我通过pdb运行它时,它以以下内容结束: The program exited via sys.exit(). Exit status: 但是在它退出的实例上没有堆栈的记录。我不知道为什么会这样。除了执行步骤和下一步之外,是否有一种方法可以在尝试执行此操作时指示pdb进入调试器,而不是执行sys.exit() 一个简单的i
The program exited via sys.exit(). Exit status:
但是在它退出的实例上没有堆栈的记录。我不知道为什么会这样。除了执行
步骤
和下一步
之外,是否有一种方法可以在尝试执行此操作时指示pdb
进入调试器,而不是执行sys.exit()
一个简单的ish解决方案是在运行之前运行monkey patchsys.exit()
:
$ python -m pdb my_script.py
(Pdb) def no_exit(code): raise RuntimeError('halt')
(Pdb) import sys
(Pdb) sys.exit = no_exit
(Pdb) cont
我试过了,但还是一样。。pdb好像在骗我?或者它仍然报告程序通过sys.exit()退出。退出状态:即使c-code绕过sys.Exit()结束进程?@gerrit似乎认为pdb假设因为没有引发异常,“SystemExit不保证事后会话”不确定如何在sys.Exit之后“强制”事后会话:/“当作为脚本调用时,如果正在调试的程序异常退出,pdb将自动进入后期调试。在事后调试(或程序正常退出)后,pdb将重新启动程序。“对我来说,有效的方法是将整个程序包装在一个try-except block@ChristabellaIrwanto中。如果您只想在程序运行后放在控制台中,
python-i myscript.py
起到了作用。