我正在检查,并希望查找发送到调试功能的表达式中的每一行,以便在有
dbg("hello"
.replace("h", "H")
.lower()
.upper())
我得到了发送到dbg的代码。这可能吗?
这是我一直在使用的功能(来自pydbg):
"""pydbg is an implementation of the Rust2018 builtin `dbg` for Python."""
import inspect
import sys
import typing
__version__ = "0.3.0"
_ExpType = typing.TypeVar('_ExpType')
def dbg(exp: _ExpType) -> _ExpType:
"""Call dbg with any variable or expression.
Calling debug will print out the content information (file, lineno) as wil as the
passed expression and what the expression is equal to::
from pydbg import dbg
a = 2
b = 5
dbg(a+b)
def square(x: int) -> int:
return x * x
dbg(square(a))
"""
for frame in inspect.stack():
line = frame.code_context[0]
if "dbg" in line:
start = line.find('(') + 1
end = line.rfind(')')
if end == -1:
end = len(line)
print(
f"[{frame.filename}:{frame.lineno}] {line[start:end]} = {exp!r}",
file=sys.stderr,
)
break
return exp
这是我第一次尝试检查,但一直找不到我想要的东西。目前,使用
from pydbg import dbg
dbg(a +
1)
不打印任何内容。 dbg()中的所有内容都必须在一行上才能正常工作。