Rob*_*tts 4 stack-trace python-2.7
我有一个python(版本2.7.6)程序,截至昨晚已经运行了一两天,当时它报告了一些错误。但是,堆栈跟踪明显是错误的。假装我的代码是这样的:
def do_A():
do_some_stuff()
do_B()
def do_B():
do_some_IO_that_could_fail()
def do_C():
if len('abc'):
do_D()
def do_D():
do_other_stuff()
if __name__ == '__main__':
do_A()
Run Code Online (Sandbox Code Playgroud)
可以失败的任务确实失败了,但是我的堆栈跟踪如下:
Traceback (most recent call last):
File "myfile.py", line 16, in <module>
do_A()
File "myfile.py", line 9, in do_A
if len('abc'):
File "myfile.py", line 13, in do_B
do_other_stuff()
CustomFailureException: "The thing that can fail? It failed."
Run Code Online (Sandbox Code Playgroud)
在我的堆栈跟踪中,“ in ...”部分是合理的,因为它们描述了实际上可以到达我的代码中具有的部分的路径CustomFailureException
。行号和它显示的代码是一致的(即说第9行,并且代码在第9行),但这是错误的行。
有谁知道我的堆栈跟踪如何发生?
注意:此特定任务每天晚上运行,并且已经运行了一段时间。它通常成功完成,但是之前失败并给出了正常的堆栈跟踪。昨晚,它始终失败,并始终给出相同的错误堆栈跟踪。
在代码运行后更改源文件时,会发生这种情况。编译后的源代码具有对源代码的行号引用,但是堆栈回溯通过重新加载源文件来填充实际的源文本。我认为也有某种缓存,但这与这里无关。
因此,这里的问题只是源文件不再与实际运行的(已编译)程序匹配,这可能是因为该文件在程序启动后已更改,或者可能是由于一些更复杂的技巧而变得不同步...
归档时间: |
|
查看次数: |
887 次 |
最近记录: |