Рубріки: Новости

Watchpoints: инструмент для мониторинга переменных в Python

Богдан Мирченко

Разработчик Тиан Гао создал инструмент с открытым исходным кодом для мониторинга переменных при отладке Python под названием Watchpoints.

Инструмент ведет себя точно так же, как программа gdb (для отладки кода на C и C++).

  • Чтобы установить watchpoints, нужно выполнить следующую команду:
$ python3 -m pip install watchpoints

 Для отслеживаемой любой переменной используется функция watch.

from watchpoints import watch

a = 0
watch(a)
a = 1

При изменении переменной информация о ее значении выводится через стандартный поток вывода данных.

====== Watchpoints Triggered ======

Call Stack (most recent call last):
  <module> (my_script.py:5):
> a = 1
a:
0
->
1

В данных о переменной будет храниться информация о строке, в которой была изменена переменная, стеке вызовов, предыдущем и текущем значении переменной.

  • Инструмент работает не только с самой переменной, но также с изменениями объекта.
from watchpoints import watch

a = []
watch(a)
a = {} # Trigger
a["a"] = 2 # Trigger
  • Функция callback запускается при переназначении переменной «a» и при изменении объекта, назначенного переменной.

Инструмент также позволяет наблюдать за переменной/объектом в любом месте, и функция callback запускается независимо от того, как функцию выполняет программа.

from watchpoints import watch

def func(var):
    var["a"] = 1

a = {}
watch(a)
func(a)
  • Функция watch может отслеживать не только переменную, но и атрибуты, и элемент словаря и списка. Это может помочь сузить круг поиска конкретных объектов.
from watchpoints import watch

class MyObj:
    def __init__(self):
        self.a = 0

obj = MyObj()
d = {"a": 0}
watch(obj.a, d["a"]) # Yes you can do this
obj.a = 1 # Trigger
d["a"] = 1 # Trigger
  • Инструмент позволяет настраивать формат вывода. Чтобы это сделать нужно обозначить собственную функцию callback.
watch(a, callback=my_callback)

# Or set it globally

watch.config(callback=my_callback)
  • Можно вызвать интерактивный отладчик pdb даже при срабатывании триггера
watch.config(pdb=True)

Чтоб не импортировать функцию в каждый отдельный файл, можно сделать ее глобальной, используя функцию install:

watch.install() # or watch.install("func_name") and use it as func_name()

Open source-инструмент watchpoints распространяется под лицензией Apache 2.0 и доступен на GitHub.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024