Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Июнь 29, 2007 20:07:46

Cyxapeff
От:
Зарегистрирован: 2006-08-17
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

Ловим ошибки

Есть программка на питоне + pygtk.
Периодически (мне так и не удалось установить закономерность) она падает с ошибкой сегментирования, как можно узнать из-за чего она падает?



Офлайн

#2 Июнь 29, 2007 21:36:13

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Ловим ошибки

Неправильно используешь Python extesions - это в общем виде. pygtk, например.
Если пишешь под винду и знаком с С++ - можно попытаться помочь. Есть наработки.
Мой метод не очень-то прост и требует умения читать C callstack/disassembler, временами собирать модули с Debug Info.
Впрочем, до этого может и не дойти - ясно станет раньше.
Под linux теоретически то же можно сделать анализом core (и это проще), но я гораздо меньше работал с unix системами.



Офлайн

#3 Июнь 29, 2007 21:42:54

Cyxapeff
От:
Зарегистрирован: 2006-08-17
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

Ловим ошибки

ну я вобщем-то предполагал, что дело в pygtk. Но вот где именно. Пишу под linux. С с++ знаком только на самом элементарном уровне (((. То есть как я понимаю, простого способа отловить такие ошибки нет…



Офлайн

#4 Июнь 29, 2007 22:11:33

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Ловим ошибки

Настрой среду, чтобы .core файлы генерились.
Открой его через gdb. Посмотри callstack.
Скорее всего он что-то навеет - там где переползает из Питона в С. Вероятно, увидишь имя функции, на которой валится. Дальше - дедукция, как у Шерлока Холмса.



Офлайн

#5 Июнь 30, 2007 12:57:34

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2175
Репутация: +  36  -
Профиль   Отправить e-mail  

Ловим ошибки

bugbuddy поставь, и сохрани лог ошибки

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version