您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python可以生成类似于bash的set -x的跟踪吗?

5b51 2022/1/14 8:22:56 python 字数 2651 阅读 553 来源 www.jb51.cc/python

在 Python中是否有类似的机制,-b对bash有效果? 以下是此模式下bash的一些示例输出: + for src in cpfs.c log.c popcnt.c ssse3_popcount.c blkcache.c context.c types.c device.c ++ my_mktemp blkcache.c.o +++ mktemp -t blkcache.c.o.2160.X

概述

以下是此模式下bash的一些示例输出

+ for src in cpfs.c log.c popcnt.c ssse3_popcount.c blkcache.c context.c types.c device.c
++ my_mktemp blkcache.c.o
+++ mktemp -t blkcache.c.o.2160.XXX
++ p=/tmp/blkcache.c.o.2160.IKA
++ test 0 -eq 0
++ echo /tmp/blkcache.c.o.2160.IKA
+ obj=/tmp/blkcache.c.o.2160.IKA

我知道Python trace模块,但它的输出似乎非常冗长,而不是像bash那样高级.

使用traceit()打开跟踪,使用traceit(False)关闭跟踪.

import sys
import linecache

def _traceit(frame,event,arg):
    '''
    http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html
    '''
    if event == "line":
        lineno = frame.f_lineno
        filename = frame.f_globals["__file__"]
        if (filename.endswith(".pyc") or
            filename.endswith(".pyo")):
            filename = filename[:-1]
        name = frame.f_globals["__name__"]
        line = linecache.getline(filename,lineno)
        print "%s  # %s:%s" % (line.rstrip(),name,lineno,)
    return _traceit

def _passit(frame,arg):
    return _passit

def traceit(on=True):
    if on: sys.settrace(_traceit)
    else: sys.settrace(_passit)

def mktemp(src):
    pass

def my_mktemp(src):
    mktemp(src)
    p=src

traceit()
for src in ('cpfs.c','log.c',):
    my_mktemp(src)
traceit(False)

产量

mktemp(src)  # __main__:33
pass  # __main__:30
p=src  # __main__:34
mktemp(src)  # __main__:33
pass  # __main__:30
p=src  # __main__:34
if on: sys.settrace(_traceit)  # __main__:26
else: sys.settrace(_passit)  # __main__:27

总结

以上是编程之家为你收集整理的Python可以生成类似于bash的set -x的跟踪吗?全部内容,希望文章能够帮你解决Python可以生成类似于bash的set -x的跟踪吗?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶