filename and line number of python script
我需要在Cython脚本中打印当前文件名,函数和行号。提议的解决方案仅适用于.py脚本,不适用于Cython脚本。
谢谢
答案 0 :(得分:1)
这是一个非常不令人满意的工作,但是我怀疑这可能是(接近)您可以做的最好的事情。
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帧。