Старые программерские грабли - Логово программиста
[Recent Entries][Archive][Friends][Profile]
02:27 pm
[Link] |
Старые программерские грабли
Вчера сделал баг и потом весь день искал его. Сегодня продолжил поиски. Баг -- классический "страшный сон программиста" -- программа в какой-то момент просто падает. Без сообщений. Как всегда, фантастические мысли типа "ошибка в компиляторе", а также совершенно феерические ухищрения, чтобы эту ошибку локализовать. Нашел-таки. Причем ведь не очепятка типа минуса вместо плюса или точки вместо запятой. Так что посыпания головы пеплом с криком: "как же я этого не заметил" не будет. Но ляп все равно обидный.
Пойду пообедую и исправлю.
|
| |
| Как ты однажды выразился, падает с "греющим душу сообщением" Segmentation fault? %)))) Это еще хорошо, когда просто падает ;) А когда при этом еще что-нить на винте убивает - становится совсем грустно... Не-а! От этого более-менее понятно, как спасаться. Делаешь так, чтобы было core dumped, потом отладчиком смотришь, на чем свалилось. А тут вывалилось Aborted. Это сообщение по умолчанию на необработанное исключение. Вот и думай, кто его выбросил.
мда... такого я за все время программирования не видел... Ну, тут я сам немного слажался. Основная библтотечная ф-ция, в которой крутится игралка -- это бесконечный цикл. Авторы библиотеки GLUT сделали корректный выход из него невозможным вообще (скорее всего, vdesk будет переписан под QT, и эта проблема будет снята). Я еще не знал всех тонкостей реализации, и тупенько все исключительные ситуации лепил через throw. Потом окзалось, что программа перехватывает такие исключения раньше ловушки, которую я поставил после main'а. И что в итоге? Исключения, которые могут возникнуть до начала отображения картинки, обрабатываются по-людски. А вот все остальные прерывают работу программы с "греющим душу" словом aborted.
Переписывать было лень, да и надобности не было. До этого вот случая.
что значит, что vdesk будет переписан под Qt???? Ты хочешь с ее помощью делать визуализацию?? Этож все переписывать.... На кой черт переписывать? Там же есть OpenGL виджет. Просто цикл событий будет не GLUT'оский, а QT'шный.
Дык... И правда есть.... запамятоваль... %) да-да, ошибка программиста любит. :-) У меня правда чуть полегче - дотнет и соотв. от фреймворка чуть более информативные сообщения приходят, если уж случился эксепшн и его никто не поймал. Хуже другое - когда ошибка появляется только в релизе и в таком месте, где ее не должно быть в принципе. Соотв. нет ничего для выдачи сообщений. Catch ее поймал и тишина. :-)) |
|