Как отлаживать программу PYGTK - PullRequest
5 голосов
/ 27 мая 2009

Когда python вызывает исключение в середине обратного вызова обработки сигнала pygtk, исключение отлавливается основным циклом gtk, его значение печатается, а основной цикл просто продолжается, игнорируя его.

Если вы хотите отладить что-то вроде pdb (python -m pdb myscript.py), вы захотите, чтобы, когда возникла исключительная ситуация, PDB перепрыгнул на нее и вы могли начать отладку. Из-за этого это невозможно.

Как я могу отлаживать программу pygtk тогда?

1 Ответ

4 голосов
/ 27 мая 2009

Нельзя заставить pdb перейти к исключению, поскольку исключение перехватывается и отключается основным циклом gtk.

Одна из альтернатив использует pdb.set_trace():

import pdb
pdb.set_trace()

См. Документацию pdb .

В качестве альтернативы вы можете просто использовать Winpdb :

Это графический отладчик GPL Python, независимый от платформы , с поддержкой удаленной отладки по сети, несколькими потоками, модификацией пространства имен, встроенной отладкой, шифрованной связью и в 20 раз быстрее, чем pdb.

Особенности:

  • Лицензия GPL. Winpdb - свободное программное обеспечение.
  • Совместимо с CPython 2.3 до 2.6 и Python 3000
  • Совместимо с wxPython 2.6 - 2.8
  • Независимо от платформы и протестировано на Ubuntu Gutsy и Windows XP.
  • Пользовательские интерфейсы: rpdb2 основан на консоли, в то время как winpdb требует wxPython 2.6 или новее.

Screenshot
(источник: winpdb.org )

...