首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python :条件断点

python :条件断点
EN

Stack Overflow用户
提问于 2022-09-09 15:36:29
回答 2查看 35关注 0票数 0

我想在程序的不同位置设置断点。但是,如果我将一个特定的参数传递给我的程序,那么它们就会被解雇,我称之为STOP_LEVEL。

代码语言:javascript
复制
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()

然后我可以创建一个断点,如

代码语言:javascript
复制
   mbp(2)

如果我把stop_level设为2,它就会被触发。

首先,我想知道这种功能还有其他标准方法吗?其次,我想知道从哪里调用了我的mbp函数,我指的是调用者函数、文件名和行号。如何将它们作为日志记录信息包含在我的功能中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-09 15:40:30

没有这样的内置功能。

查找从何处调用应用程序的唯一方法是检查堆栈或从函数中弹出。在弹出堆栈(从函数返回)之后,您将位于代码中调用它的位置。

要检查堆栈,可以使用inspect.stack()

在pdb中,您可以运行命令where

票数 1
EN

Stack Overflow用户

发布于 2022-09-09 16:06:55

我最终得到了这个功能:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73664496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档