我想我以前问过这个问题,但是有办法设置
python处理PDB的无人例外?我知道设置
sys.except_hook到称为PDB的东西,但这通常是完成的
在程序的外部级别,到钩获取时
呼叫,例外已经将堆栈解开为最外面
等级.我的情况是我运行多个小时或多天的计算
最终由于一些意外的输入而崩溃,我想
当例外情况下,在最内向的调试器中闯入调试器
遇到了,因此我可以使用PDB命令和简历修复错误
加工.当然,这假定为Python的某些语义
例外(即处理一个涉及扫描堆栈两次,一次
寻找处理程序,然后再次真正放松堆栈),我
不确定是否真的这样做.我确实知道LISP有一个
但是,这样的要求;所以也许有希望.
# 回答1
保罗·鲁宾(Paul Rubin
...
为什么不使用追溯您可以向您展示在哪里更改代码
在那个点附近添加了一个呼叫的异常处理程序
调试器?
# 回答2
R. Bernstein Schrieb:
...
为什么不使用追溯您可以向您展示在哪里更改代码
在那个点附近添加了一个呼叫的异常处理程序
调试器?
因为他想直接解决这个问题,然后继续,
而不是损失数小时甚至数天的计算.
但是,这是不可能的.
diez
# 回答3
保罗·鲁宾·施里布(Paul Rubin Schrieb):
这项工作会(尽管它可能会减慢程序)吗?
导入系统,PDB
DEF TRACEFUNC(帧,事件,ARG):
如果事件=="异常":
pdb.set_trace()
返回TraceFunc
sys.settrace(TraceFunc)
DEF测试(ARG):
如果arg 20:
提高价值ERROR(ARG)
返回测试(arg+1)
测试(0)
托马斯
# 回答4
" Diez B. Roggisch"
...为什么不使用追溯您可以向您展示在哪里更改该点的代码,以添加一个称为ThedeBugger的异常处理程序?
因为他想直接解决这个问题,然后
继续,而不是损失数小时甚至数天的计算.
然后主动添加异常处理程序;-)
# 回答5
2008/9/10 Paul Rubin <" http://phr.cx"@nospam.invalid>:
http://code.activestate.com/recipes/65287/
- -
干杯,
Simon B. si@brunningonline.net http://www.brunningonline.net/simon/blog/
gtalk:Simon.Brunning | MSN:small_values | Yahoo:SmallValues | Twitter:Brunns