【发布时间】:2019-04-05 14:07:28
【问题描述】:
filename and line number of python script
我需要在 Cython 脚本中打印当前文件名、函数和行号。建议的解决方案仅适用于 .py 脚本,不适用于 Cython 脚本。
谢谢
【问题讨论】:
标签: cython
filename and line number of python script
我需要在 Cython 脚本中打印当前文件名、函数和行号。建议的解决方案仅适用于 .py 脚本,不适用于 Cython 脚本。
谢谢
【问题讨论】:
标签: cython
这是一个非常不令人满意的工作,但我怀疑它可能是(接近)你能做的最好的。
Cython 会在引发异常时生成调试信息,因此您需要引发和捕获异常才能访问此信息
import sys
import traceback
def f():
# code ...
try:
raise RuntimeError() # get information about this line
except RuntimeError:
print(traceback.extract_tb(sys.exc_info()[2],limit=1))
# ... more code
请注意,您不能尝试通过将所有内容放入“get_debug_info”函数然后进一步查找堆栈跟踪来保存重复 - Cython 仅生成函数的堆栈帧作为异常会向上传播堆栈,因此如果您捕获到异常,那么您将看不到它上方的任何 Cython 帧。
【讨论】: