Название: Ловля SIGSEGV через try/catch Отправлено: navrocky от Октябрь 05, 2010, 09:53 Может кому пригодится моя либа по трансляции SIGSEGV и SIGFPE в исключения C++...
Проверено под: linux/gcc и windows/msvc, под windows/mingw почему-то не отрабатывает еще не разобрался ( Библиотека - http://code.google.com/p/segvcatch/ Документация - http://www.visualdata.ru/ext/segvcatch-doc Статья по русски - http://www.visualdata.ru/blog/109-segv-signal.html Код
Название: Re: Ловля SIGSEGV через try/catch Отправлено: ритт от Октябрь 05, 2010, 19:59 на мой взгляд - самое полезное "готовое решение" :)
ждём работоспособную реализацию под мингв... Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 05, 2010, 20:35 А так что будет?
Код
Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 05, 2010, 21:30 на мой взгляд - самое полезное "готовое решение" :) ждём работоспособную реализацию под мингв... Цитировать Блаженны нищие духом ибо не ведают они что творят :)Название: Re: Ловля SIGSEGV через try/catch Отправлено: navrocky от Октябрь 06, 2010, 09:34 А так что будет? Код
Так деление на ноль будет, тоже поймается. Цитировать на мой взгляд - самое полезное "готовое решение" ждём работоспособную реализацию под мингв... Хитрый какой, а помочь? ;) хоть потестить... Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 06, 2010, 17:51 А так что будет? Код
Так деление на ноль будет, тоже поймается. Название: Re: Ловля SIGSEGV через try/catch Отправлено: ритт от Октябрь 07, 2010, 02:59 Цитировать на мой взгляд - самое полезное "готовое решение" ждём работоспособную реализацию под мингв... Хитрый какой, а помочь? ;) хоть потестить... я лишь выразил мысль, что, будь она кроссплатформенной, в целом штука потенциально полезная :P успехов Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 07, 2010, 13:21 я лишь выразил мысль, что, будь она кроссплатформенной, в целом штука потенциально полезная :P Да, такую хотелось бы иметь, но в том-то и дело что (на любой платформе) она ловит "не все" а лишь "часть" (некоторых). Напр. чтение/запись по удаленному указателю может пойматься а может и нет (недавно обсуждали). То же и с арифметикой. Все равно нужны доп. проверки - а значит положиться на такой tool нельзя Название: Re: Ловля SIGSEGV через try/catch Отправлено: navrocky от Октябрь 08, 2010, 12:24 Ну как бы для подстраховки полезно, я буду включать это в конечный релиз, для отладки оно конечно не особо полезно.
Цитировать будь она кроссплатформенной так и задумывается, не везде только протестированоЦитировать Однако ж не ловится - спокойно печатает "inf" и идет дальше.. Странно, но вообще зависит от ОС, компилятора, ключей компиляции..В линуксе генерится SIGFPE который прибивает программу. Название: Re: Ловля SIGSEGV через try/catch Отправлено: Alexxey593 от Октябрь 11, 2010, 20:34 Попробуем. Проблема весьма насущна и решения я пока не нашел. Надеюсь данная либа поможет. Жаль, что пока под windows/Mingw не работает...
Название: Re: Ловля SIGSEGV через try/catch Отправлено: Авварон от Октябрь 12, 2010, 13:05 Блин, вот я не понимаю - нафига ловить эксепшн о битых указателях? Почему у меня в программах а) нет утечек б) все указатели валидны? Неужели это так сложно - продумать программу заранее и определиться с временем жизни объектов?
Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 12, 2010, 13:40 Почему у меня в программах а) нет утечек б) все указатели валидны? Неужели это так сложно - продумать программу заранее и определиться с временем жизни объектов? А вот у меня масса утечек и битых указателей :) Кстати недавно поюзал "Leaks" - пусть не все но многое поймал, я доволен. Примерный набор- не удалял созданный дескриптор (там где AECoerseDesc и.т.п) - где-то в недрах OpenGL (не смог разобраться, отключил эту фичу) - деструктор базового класса не был виртуальным - по мелочам: new, потом выскочил через return и забыл delete - std::map<int, myClass *> не было удаления для myClass * ну и.т.п. Название: Re: Ловля SIGSEGV через try/catch Отправлено: Авварон от Октябрь 12, 2010, 15:53 У меня в программе 14000 строк было 3 утечки - 1 в полунаписанном модуле (модуль для экспериментов) и 2 раза забыл деструктор в классе, содержащем d_ptr. Как вы ухитряетесь так косячить?:)
Название: Re: Ловля SIGSEGV через try/catch Отправлено: Igors от Октябрь 12, 2010, 17:11 У меня в программе 14000 строк было 3 утечки - 1 в полунаписанном модуле (модуль для экспериментов) и 2 раза забыл деструктор в классе, содержащем d_ptr. Как вы ухитряетесь так косячить?:) Ну во-первых там не я один, а главное - строк-то под миллион :)Название: Re: Ловля SIGSEGV через try/catch Отправлено: ufna от Октябрь 12, 2010, 17:53 ну скорее всего главное "не один", т.к. у меня в текущей программе тоже строк под миллион, но писалась единолично и для WinCE - как следствие за памятью был дичайший контроль.
Название: Re: Ловля SIGSEGV через try/catch Отправлено: navrocky от Октябрь 14, 2010, 16:03 Для меня частая ситуация - это не битые указатели и утечки, а доступ по нулевому указателю. Как правило забываются проверки.
Название: Re: Ловля SIGSEGV через try/catch Отправлено: iukash от Май 01, 2011, 12:07 А может кто нибудь выложить пример использования этой библиотеки без использования cmake, а с обычным .pro файлом.
|