Здравствуйте, pavel_turbin, Вы писали:
_>а как иначе дебужить? Просить логи или эксперементальную версию запускать?
Логи можно запросто и самому слать. Те же log4*** имеют EMailAppender или как он там называется.
Custom Build это уже совсем на крайний случай. Логи кстати не объязательно писать всегда. Может быть инсталляция программы и отдельно мини-инсталляция, которая включает запись и отсылку логов.
Пользователю так гораздо проще. В особенности если ошибка нестабильная и не известно когда произойдёт.
Я конечно понимаю, что dump это очень круто и супер-полезно, но какой процент пользователей, пусть даже под linux, сумеет его правильно записать и отослать? Хорошо подумай, прежде чем назовёшь цифру больше 10.
adontz wrote: > C>Пусть шлют coredump, по которому можно посмотреть stacktrace. > Я рыдаю. Ты хоть раз работал с пользователями? ИМХО за такие выходки PM > настучит по голове, а support team добавит.
Делайте автоматический присылатель core-ов. У нас так и сделано для
Windows (под Линукс у нас серверный софт, который обслуживают админы).
Здравствуйте, Cyberax, Вы писали:
C>Делайте автоматический присылатель core-ов. У нас так и сделано для Windows (под Линукс у нас серверный софт, который обслуживают админы).
Это замечательно конечно, примечик такой штуки даже на CodeProject есть, но по сути неприятная выходит ситуация. Была ошибка после которой можно было восстановится, а вместо этого программа валится, теряются данные и т.д. и т.п.
adontz wrote: > Это замечательно конечно, примечик такой штуки даже на CodeProject есть, > но по сути неприятная выходит ситуация. Была ошибка после которой можно > было восстановится, а вместо этого программа валится, теряются данные и > т.д. и т.п.
Не "можно было восстановиться", а "можно было сделать вид, что ничего не
произошло". Причем с возможными катастрофическими последствиями.
Уж лучше пусть программа сразу упадет, чем будет делать вид.
adontz wrote: > > C>Делайте автоматический присылатель core-ов. У нас так и сделано для > Windows (под Линукс у нас серверный софт, который обслуживают админы). > > Это замечательно конечно, примечик такой штуки даже на CodeProject есть, > но по сути неприятная выходит ситуация. Была ошибка после которой можно > было восстановится, а вместо этого программа валится, теряются данные и
Если при аварийном завершении программы теряются данные, то это ошибка,
и ее надо устранить.
Аварийное завершение может произойти и без всякой вины программы.
Например, из-за сбоя в электропитании. Программа должна предусматривать
безопасность пользовательских данных при такой ситуации.
Здравствуйте, Tanker, Вы писали:
T>Здравствуйте, srggal, Вы писали:
S>>After the call to fclose(), any use of stream results in undefined behavior.
T>Вот такого как раз быть и не должно. Функция должна вернуть код ошибки.
ГМ, если Вы не поняли, то это цитирование POSIX SUSV3.
ИМХО не очень правильно переть против танка с шашкой, и кричать, что он должен свернуть
Есть список, а точнее — таблица дескрипторов. exit() только говорит ядру о том, что процесс завершился, а освобождением ресурсов занимается само ядро. В том числе и закрытием дескрипторов. fopen() & Co для работы с файлами в итоге делают системные вызовы, и хранить в библиотеке отдельный список указателей на структуру FILE не вижу смысла.
A>Всё равно, поиск в списке из нескольких десятков элементов это мелочи. Ввод-вывод крайне редко является узким местом. А если является, то меняют аппаратуру, а не переписывают программу.
Правильно. Тормозит программа — купите процессор побыстее, поставьте памяти побольше. Переразведите плату под более быстрый микроконтроллер
ДД>>Бывает. Машины ненадежны, но люди еще ненадежнее. Но это не повод обвинять в кривости библиотеку, которая работает в соответствии со стандартом.
A>А где я обвиял в кривости? Ты ни с кем меня не перепутал?
Ты — нет, обвинял Кирпа В.А — автор первого сообщения. А ты, насколько я понял, с ним согласен. Если не так — извини.
ДД>>Тогда может ты предложишь проверять на валидность указатели в realloc, free, pthread_create, sem_post и т.д.?
A>А почему нет?
Хотя бы потому что в стандартной библиотеке это не нужно.
A>Идеология не позволяет?
В какой-то мере — да.
ДД>>Для быстрой и дешевой разработки ПО, некритичного к кривости рук программиста, существуют соответствующие технологии и языки.
A>Кривизна рук тут ни при чём. Ошибки делают все.
Да. Но некоторые их исправляют, а некоторые о них даже не подозревают.
A>Я не очень понимаю, зачем надо гордится тем, что "язык на котором я программирую позволяет совершать более изощерённые ошибки" и тем более лелеять это как святыню.
Не совсем понял, к чему это, ну да ладно.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, Tanker, Вы писали:
_>>а вы думаете под Windows API функции не используют HeapAlloc? вы ошибаетесь. Однако, если память не выделена, CreateFile обломится.
T>Все правильно, только дескриптор закрывай сколько хочешь, худа от этого не будет. Тебе вернется код ошибки и все.
А кто сказал, что в glibc нельзя закрывать дескриптор сколько угодно? Вернется код ошибки и все.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, adontz, Вы писали:
C>>Пусть шлют coredump, по которому можно посмотреть stacktrace.
A>Я рыдаю. Ты хоть раз работал с пользователями? ИМХО за такие выходки PM настучит по голове, а support team добавит.
-1
Я позволю Вам напомнить, что в XP автоматом включили создание дампов и отсылку их разработчикам, создание дампов в ОС Виндовз появилось намного раньше, но даже MS нашла рациональное зернго в дампах.
Здравствуйте, Tanker, Вы писали:
T>Здравствуйте, MaximE, Вы писали:
>>> Раз они юзают malloc, free то пусть будут добры не попадать в условия когда >>> портится heap (например повторное закрытие файла)
ME>>Лучше пусть они маскируют ошибки в твоем коде, так?
T>Маскируют ? Если бы во время повторного закрытия валился аналог Debug Break, это было бы неплохо, а так валится хип. Увидел программист, что хип повалился, что ему дальше делать ?
Для того, чтобы увидить чьло хип повалился, достаточно использовать valgrind.
ИМХО, вся проблема людей когда-либо работающих с MS OS в том, что они излищне доверчивы к ПО, и считают, что ПО все должно делать за них.
НО, даже в MSVC 2003 при создании консольного приложения — отладочная куча сама по себе не подрубается, это надо делать ручками. Так что притензия не принимается
Здравствуйте, srggal, Вы писали:
S>Я позволю Вам напомнить, что в XP автоматом включили создание дампов и отсылку их разработчикам, создание дампов в ОС Виндовз появилось намного раньше, но даже MS нашла рациональное зернго в дампах.
Неправильно написал. правильно так.
Я позволю Вам напомнить, что в XP автоматом включили создание дампов и отсылку их разработчикам ОС, создание дампов в Виндовз появилось намного раньше, но даже MS нашла рациональное зернго в дампах.
Кроеме того я не сказал, что дампы плохо. Я сказал что плохо — падающее приложение и лучше до этого не доводить.
Здравствуйте, Pzz, Вы писали:
Pzz>Если при аварийном завершении программы теряются данные, то это ошибка, и ее надо устранить.
Это в теории. На практике я знаю только два пакета програм MS Office и Corel которые так делают. Причём в пакете Corel это не работает Все остальные теряют данные.
adontz wrote: > Это в теории. На практике я знаю только два пакета програм MS Office и > Corel которые так делают. Причём в пакете Corel это не работает Все > остальные теряют данные.
Пять копеек от линуксоида — ViM. При большинстве вариантов настройки
(включая умолчания) он скидывает действия (иногда их результаты) на
диск. Причём это делается так же, как и swap, когда памяти мало.
Вероятность успешного восстановления стремится к 1. Впрочем, под Windows
всё у него так же.
Ну и, кстати, когда я роняю Opera или Firefox (с SaveSession), список
адресов, которые я держал открытыми, не теряется. Что, впрочем, иногда
приводит к необходимости с этим бороться, но в среднем очень удобно.
Здравствуйте, adontz, Вы писали:
A>Кроеме того я не сказал, что дампы плохо. Я сказал что плохо — падающее приложение и лучше до этого не доводить.
ГМ,если бы Вы действительно так считали, то пришли бы к томуже выводу, что и я
Приложение, которое не падает должно следовать стандартам которым соответсвует ОС, под которую написано приложение. В противном случае UB.
Неправильность Вашей позиции ( я считаю таковой ожидание умной диагностики от рантайм, но если ошибся — поправьте ) и привела АТ к созданию этого топика. Он не стал изучать POSIX, а доверился смартовому рантайму от
SUN.
Портировал я давеча один непутевый код с SUN на Linux
О результате такого подхода мы можем судить из его сообщения, и флейма, который оно вызвало.
ИМХО: стандарты как минимум в ИТ, пишутся таким образом, дабы несвязывать разработчикам стандартизованного ПО руки, и даже наоборот, предоставить свободу реализации. Можно приводить много примеров требований из разных стандартов, которые на первый взгляд необязательны и совсем неочевидны. НО, повторюсь: ЧТОБЫ ПРОГРАММА НЕ ПАДАЛА, ОНА ДОЛЖНА СООТВЕТСВОВАТЬ СТАНДАРТАМ ( каким — уточнять не буду, но как минимум языка и ОС под которую написана ).
Здравствуйте, Tanker, Вы писали:
ME>>Лучше пусть они маскируют ошибки в твоем коде, так?
T>Маскируют ? Если бы во время повторного закрытия валился аналог Debug Break, это было бы неплохо, а так валится хип. Увидел программист, что хип повалился, что ему дальше делать ?
Какой такой программист? У меня компы в стойке, за ними нет операторов.
A>А подумать, прежде чем писать можно было? Ей передаётся не абы какой указатель, а выделенный fopen. Что мешает хранить где-то внутри список всех указателей выделенных fopen и при вызове fread, fwrite, fclose проверять валидность переданного указателя простым его вхождением в список? Ничего не мешает, кроме лени и желания гнать понты. По сравнению со скоростью ввода-вывода это копейки. Те же дескрипторы в Windows это сплошь указатели или индексы в таблицах, однако использование левого дескриптора не приводит ни к какому краху. UB на сегодня это плохой тон или детский сад, уж сам выбери.
adontz wrote: > > Pzz>Если при аварийном завершении программы теряются данные, то это > ошибка, и ее надо устранить. > > Это в теории. На практике я знаю только два пакета програм MS Office и > Corel которые так делают. Причём в пакете Corel это не работает Все > остальные теряют данные.
Вы точно знаете? Вы попробовали _все_ остальные программы? Сколько Вам
лет, простите?...
Здравствуйте, Pzz, Вы писали:
Pzz>Вы точно знаете? Вы попробовали _все_ остальные программы? Сколько Вам лет, простите?...
Я сказал я знаю два пакета,я не сказал, что я знаю, что етсь только два пакета. ВСе остальные программы никто не пробовал. Но пока что программ намечается от силы 5, если считать и браузеры. Можете расширить этот список вне зависимости от возраста.
Я вот чего не пойму, доколе будет холиварз в этой ветке ?
Эту ветку давно пора перенемти в Философию, Ибо конструктивные ответы были даны, но все выродилось в банальный холиварз.
ОТчего в форуме по С/С++ не приходит в голову кричать во весь голос — а мне не нравится как написан стандарт ?
А если и находятся индивидумы — то никто с нимим не флеймит ?
МОДЕРАТОРЫ ИМХО — ПОРА ПЕРЕНОСИТЬ
Нет желания копаться во всем, приведу только ссылку на свой пост: здесь
Здравствуйте, Кирпа В.А., Вы писали:
КВА>Здравствуйте, ДимДимыч, Вы писали:
ДД>>Здравствуйте, adontz, Вы писали:
КВА>активность на этом форуме за счет моего топика значительно подросла КВА>только вот за такой интересный топик минусы получать не очень приятно
ИМХО В вашем топике нет АБСОЛЮТНО ничего интересного, активность подросла за счет подтянувшихся апологетов WINDOWS, с соседнего WINAPI и философов из ФИЛОСОФИИ.
Если так и дальше будет, то или начнут модерировать модераторы, или появится новый форус — ТОЛЬКО О ЮНИКС и ТОЛЬКО ДЛЯ ЮНИКСЛОИДОВ