我想在程序的不同位置设置断点。但是,如果我将一个特定的参数传递给我的程序,那么它们就会被解雇,我称之为STOP_LEVEL。
STOP_LEVEL = 0
def mbp(sl=-1):
if sl == STOP_LEVEL:
# I would like to print which function called this
mlog.info("break point at %s, %s", ...)
breakpoint()然后我可以创建一个断点,如
mbp(2)如果我把stop_level设为2,它就会被触发。
首先,我想知道这种功能还有其他标准方法吗?其次,我想知道从哪里调用了我的mbp函数,我指的是调用者函数、文件名和行号。如何将它们作为日志记录信息包含在我的功能中?
发布于 2022-09-09 15:40:30
没有这样的内置功能。
查找从何处调用应用程序的唯一方法是检查堆栈或从函数中弹出。在弹出堆栈(从函数返回)之后,您将位于代码中调用它的位置。
要检查堆栈,可以使用inspect.stack()
在pdb中,您可以运行命令where
发布于 2022-09-09 16:06:55
我最终得到了这个功能:
import sys
STOP_LEVEL = 0
def mbp(sl=-1):
if sl == STOP_LEVEL:
fname = sys._getframe().f_back.f_code.co_name
line = sys._getframe().f_back.f_lineno
mlog.info("break point at %s line %s",fname, line)
breakpoint()https://stackoverflow.com/questions/73664496
复制相似问题