跳转到主要内容

将断点与打印调试混合。

项目描述

breakword

breakword是一个小的调试工具,它将打印调试与断点调试结合起来。它的目标是方便调试那些你可能使用打印语句快速找到问题所在,然后切换到逐步调试器的问题。

breakword通常需要运行你的程序两次,并且只有在它是确定性的情况下才能正常工作。

如何使用

  1. 将环境变量PYTHONBREAKPOINT设置为breakword.breakpoint

  2. 像打印语句一样使用breakpoint

for i in range(10):
    breakpoint(i)

这将打印出类似以下的内容

$ python example.py
⏎ standard 0
⏎ sound 1
⏎ character 2
⏎ thank 3
⏎ play 4
⏎ however 5
⏎ fish 6
⏎ cultural 7
⏎ either 8
⏎ and 9
  1. 使用BREAKWORD环境变量设置一个断点,以便进一步调查。例如,如果你想在上述程序中的i == 6时停止,你可以运行以下命令
$ env BREAKWORD=fish python example.py
⏎ standard 0
⏎ sound 1
⏎ character 2
⏎ thank 3
⏎ play 4
⏎ however 5
⏎ fish 6
> example.py(2)<module>()
-> for i in range(10):
(Pdb) i
6

你也可以提供一个以逗号分隔的单词列表,例如BREAKWORD=sound,fish

注意:没有参数的breakpoint()保留正常行为。

demo

更多功能

  • breakword.log(*things, **config):打印一个单词,并在其后可选地打印其他内容。

  • breakword.brk(watch=None, **config):在打印出给定的单词后设置一个断点。如果watchNone或未给出,将参考BREAKWORD环境变量。如果没有设置变量,则不会发生任何操作。

    • 这相当于breakword.after(word).breakpoint()
  • breakword.after(watch=None, **config):返回一个在打印给定观察词之后评估为 True 的对象。与 brk 一样,如果 watchNone 或未提供,将查询 BREAKWORD 环境变量。

  • breakword.word(**config):返回下一个单词作为字符串。您可以自己打印它,在这种情况下,它基本上类似于 log,或者您可以将它存储在对象中。

  • breakword.logbrk(**config):调用 log 然后调用 brk

  • breakword.wordbrk(**config):调用 word 然后调用 brk。返回单词。

  • breakword.set_default_logger(logger):设置要使用的日志记录函数(默认为 print

跟踪对象

  • breakword.track(obj, all=False) 将在对象中设置 breakword 属性为列表中的下一个单词。通过设置 BREAKWORD 环境变量,您将断点设置到对应的 track 调用。将 all 参数设置为 True,则属性将包含一个列表。注意:如果 obj 是整数或字符串,则此操作将不起作用,在这种情况下,跟踪将打印警告。

  • breakword.track_creation(*classes) 将在创建给定类的所有实例时设置 breakword 属性。这样,您可以设置一个断点回到某个感兴趣对象的创建。

使用 breakword.groups.<name> 获取具有给定名称的“单词组”。每个组独立生成单词,因此不会相互干扰。它们具有 logbrkafterword 等方法。默认组是 groups[""]

from breakword import groups

assert groups.aardvark == groups["aardvark"]

# Log "a" in the aardvark group
groups.aardvark.log("a")

# Log "b" in the pelican group
groups.pelican.log("b")

# Get the next word in the pelican group
word = groups.pelican.word()

# Conditional behavior to perform only after the word "cherry"
if groups.pelican.after("cherry"):
    print("blah")

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

breakword-0.3.2.tar.gz (532.6 kB 查看散列)

上传时间

构建分布

breakword-0.3.2-py3-none-any.whl (10.2 kB 查看散列)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面