如何在Cython脚本中打印当前文件名,函数和行号

时间:2019-04-05 14:07:29

标签: cython

filename and line number of python script

我需要在Cython脚本中打印当前文件名,函数和行号。提议的解决方案仅适用于.py脚本,不适用于Cython脚本。

谢谢

1 个答案:

答案 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帧。