gpt4 book ai didi

python-2.7 - 我的堆栈跟踪中的行号怎么会出错?

转载 作者:行者123 更新时间:2023-12-05 00:58:14 24 4
gpt4 key购买 nike

我有一个 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()

可能失败的任务确实失败了,但我的堆栈跟踪是这样的:
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."

在我的堆栈跟踪中,“in ...”部分是合理的,因为它们描述了一条路径,该路径实际上可以到达我的代码中具有 CustomFailureException 的部分。 .行号和它显示的代码是一致的(即它说第 9 行并且代码在第 9 行),但它是错误的行。

有没有人知道这会如何发生在我的堆栈跟踪中?

注意:这个特定的任务每晚运行,并且已经这样做了一段时间。它通常成功完成,但之前失败并给出了正常的堆栈跟踪。昨晚,它始终失败并始终给出相同的错误堆栈跟踪。

最佳答案

在代码运行后更改源文件时会发生这种情况。编译后的源代码具有对源代码的行号引用,但堆栈回溯通过重新加载源文件来填充实际的源文本。我认为也有某种缓存,但这与此处无关。

所以这里的问题只是源文件不再与实际运行的(编译的)程序匹配,可能是因为它在程序启动后被更改了,或者它们可能因为一些更复杂的技巧而变得不同步......

关于python-2.7 - 我的堆栈跟踪中的行号怎么会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com