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

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.

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023