当我在linux上执行python脚本并中断该过程时,它给了我“最近的最后一次调用”:
Traceback (most recent call last):
File "clustermptest.py", line 38, in <module>
if sequences[i][x:x+3]==CAI[cailength][1]:
KeyboardInterrupt
有没有办法查看最近的最后一次调用是什么,即当脚本仍在运行/没有停止脚本时当前正在处理的行?
答案 0 :(得分:0)
您可以winpdb使用attach to your running program,并允许您在不同的点上进行分解,检查和恢复。
或者,你可以定义一个信号处理程序,虽然这可能不是一个完全可靠的解决方案,特别是如果你使用线程:
import signal
import traceback
def sigint_handler(signal, frame):
# ctrl-c generates SIGINT
traceback.print_stack()
print('-'*80)
def foo():
total = 0
for i in range(10**8):
total += i
return total
if __name__=='__main__':
signal.signal(signal.SIGINT, sigint_handler)
print(foo())
运行test.py
,并在不同时刻按C-c
会产生:
C-c C-c File "/home/unutbu/pybin/test.py", line 20, in <module>
print(foo())
File "/home/unutbu/pybin/test.py", line 14, in foo
for i in range(10**8):
File "/home/unutbu/pybin/test.py", line 9, in sigint_handler
traceback.print_stack()
--------------------------------------------------------------------------------
C-c C-c File "/home/unutbu/pybin/test.py", line 20, in <module>
print(foo())
File "/home/unutbu/pybin/test.py", line 15, in foo
total += i
File "/home/unutbu/pybin/test.py", line 9, in sigint_handler
traceback.print_stack()
--------------------------------------------------------------------------------
4999999950000000
参考文献: