zoukankan      html  css  js  c++  java
  • python 获取调用栈和行号

    # coding=utf-8
    import sys
    
    
    # noinspection PyProtectedMember,PyBroadException,SpellCheckingInspection
    def f3():
        DEBUG_TRACE_LEVEL = 0
    
        # sys._getframe(0) 和 sys._getframe() 结果一样
        #
        # sys._getframe(0) 代表当前文件名,函数名,行号
        # sys._getframe(1) 代表上一层调用的文件名,函数名,行号,以此类推
        print(sys._getframe(DEBUG_TRACE_LEVEL).f_code.co_filename)
        print(sys._getframe(DEBUG_TRACE_LEVEL).f_code.co_name)
        print(sys._getframe(DEBUG_TRACE_LEVEL).f_lineno)
    
        try:
            raise Exception
        except Exception:
            # 也可以通过异常获取栈信息
            # tb_frame 代表当前栈信息,tb_frame.f_back 代表上一层调用栈信息,tb_frame.f_back.f_back 代表上上层调用,以此类推
            trace = sys.exc_info()[2].tb_frame
            for _ in range(DEBUG_TRACE_LEVEL):
                trace = trace.f_back
    
            print(trace.f_code.co_filename)
            print(trace.f_code.co_name)
            print(trace.f_lineno)
    
    
    def f2():
        f3()
    
    
    def f1():
        f2()
    
    
    f1()
    
    
    


  • 相关阅读:
    4月21日Java作业
    5.14 Java作业
    第十周java作业
    4月30号作业
    第七周上机
    4.9Java
    通宵看剧有感
    error: pathspec 'xxxxxxxxx' did not match any file(s) known to git
    markdown格式测试
    博客申请通过啦
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/12764603.html
Copyright © 2011-2022 走看看