Какие хорошие варианты для отладки приложений urwid?

Мой текущий временный подход - это запись в текстовый файл, но это не очень интерактивно. Я пытался использовать pdb, но, похоже, это не ладит с urwid, pdb не принимает никакого ввода, как только он достигает точки останова.

3 ответа

Несколько практических приемов... Отладка urwid странная и не очень хорошо возможна в классическом смысле, большую часть времени после рендеринга canvas вы больше не можете проверять вещи.

Что помогло мне:

  • Ошибки маршрутизации в файл. Если вы получаете исключения и хотите понять, что, где и как, хорошая реализация приведена здесь: /questions/35982413/urwid-kak-uvidet-oshibki/35982420#35982420
  • На самом деле постарайтесь понять, что ваши модули и как вы хотите достичь. Чтение документации для n+1время хорошая идея.
  • Посмотрите на реализацию виджетов, которые вы используете. Часто они имеют больше информации.

Я знаю, что это не считается отладкой, но это мне очень помогло в поиске ошибок или странного поведения.

Одна вещь, которую я нашел, - добавить текстовый виджет для отображения сообщений отладки.

Я не создавал много сложных приложений ( пасьянс был самым большим приложением, которое я написал с ним), поэтому такой подход был достаточно хорош.

В некоторых конкретных случаях вы все еще можете уйти с помощью PUDB - но так как он также использует Urwid, он украдет выходные данные из приложения. На практике после перехода из приложения в pudb (возможно, из pudb.set_trace() точка останова добавляется в ваш код), тогда вы не сможете вернуться к своему приложению.

Для более сложных приложений может быть интересно создать "режим отладки", или, возможно, вы можете попробовать использовать удаленный pudb? Еще не пробовал, но выглядит полезным. знак равно

на всякий случай, если кто-то ищет лучший ответ, я могу сообщить, что отладчик отладчика VSCode Python отлично подходит для отладки приложений urwid (и для отладки Python в целом). Ваш отладчик полностью отделен от консоли и не мешает рисованию.

Другие вопросы по тегам