|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Vladimir Bormotov 2:5020/400 01 Oct 2002 02:34:49 To : Vjacheslav Maslov Subject : Re: g++ --------------------------------------------------------------------------------
Hi, Vjacheslav!
>>>>> "VM" == Vjacheslav Maslov
>>>>> <Vjacheslav.Maslov@p61.f151.n5000.z2.fidonet.org> writes:
[skip]
VB>> А вот умение писать правильные логи, привычка везде расставлять ассерты,
VB>> помогает очень сильно.
VM> А насколько логи снижают производительность программы?
что такое "производительность программы"?
Что такое "на сколько логи снижают"?
В простейшем случае - это один вызов syslog.
в более сложном, где time critical - свой логинг, который в итоге скорее
всего тоже закончится вызовом syslog, но может быть уже в отдельной нити.
VB>> Я уже отвечал на строку которая тут первая в квотинге, но не видел
VB>> своего постинга, в котором был вот такой URL:
VB>> http://lists.lexa.ru/apache-talk/msg06808.html
VM> инета нету
не страшно. Там рассказывалось на каких loglevel чего у нас пишется.
===
IS> Тогда уж этому сообщению лучше сделать loglevel помельче - warn или
IS> notice. Потому как err - это минимум, который нужно выставлять.
вот у нас "завдено" примерно следующее -
debug - то что реально нужно только автору кода (или человеку который
вдруг полезет в исходники что-то там править)
info - то, что может понадобиться техническому специалисту для
локализации проблемы и написания качественого bug-report.
notice - то, что может понадобиться пользователю, но не обязательно
warning - то, что таки есть смысл читать, но можно не читать, если не
хочется
error - с этим нужо че-то делать, но можно потерпеть (недолго ;)
critical - если с этим ничего не сделать, то будет хуже
alter - хуже, о котром говорили на уровне critical уже наступило
emerg - "Приплыли". За такого рода сообщением обычно следует экстреный
выход из программы.
===
VM> То есть ты писал реальные программы, использующиеся в реальной
VM> обстановке HИ РАЗУ не использовав отладчик?
Почему "ни разу"? Приходилость колупаться в проекте написаном на tp7.
Hужно было его "полечить". Минут 10 мы его честно пытались трейсить,
через весь TurboVision, надеясь вспомнить "а как там оно устроено... ведь
всего лет семь назад все это знал очень хорошо", и угадать, в каком месте
нужно "зайти внутрь", а в каком можно смело пропустить вызов процедуры.
Я даже помнил что можно ставить условные точки останова! Hо это не сильно
помогло ;-)))
Через 10 минут мы поняли, что мысла тратить время на отладчик и блукание
по коду нет, проще приписать хоть в каком-то виде протоколирование,
например тупую запись в файл какой-нибудь ругни.
например, самые очевидные места для writeln(f_log, 'some shit') - это те
строки, где мы пытались ставить разымные breack point'ы.
Модуль в котором оно валилиось мы знали (проект наплохо спроектирован,
поделен на классы, база вынесена. Целевые модули реализовавали наследника
от некого базового класса, в котором пререопределялись пара-тройка
виртуальных функций. В средем 80-200 строк на такой прикладной модуль).
Выяснять как и о чем думал человек (кстати, весьма неординарных
способностей, такое отбабахал в одиночку!), это ДОЛГО и следовательно
ДОРОГО. Даже еслиб помнили архитектуру TV в рамках котрой все это було
писано, всеравно грустно.
С нормальным протоколированием четко поймали где что неправильно делалось,
даже немного поняли что откуда вызывается ;-)
VM> Расскажи о том, что это за проекты
начиная от простейшего CGI (давно), заканчивая вот проектиком, который
живет на embedded linux (cris-axis-linux-gnu).
Hапример embedder приложение разрабтаывалось в рамках проекта "Комплекс
автоматизации медицинской лаборатории". Благо сейчас этим другие ребята
занимаются, молодые и энергичные ;)))
Зачем вообще отладчик? Перечисли ситуации, когда отладчик удобнее.
Одну я знаю - писаное на plain C непотребство, упавшее в корку. Отладчик
просто незаменим чтоб выяснить по корке, в каком месте нужно добавлять
assert/log...
Hапример eiffel "страдает" тем, что корректно возвращает нормальный
traceback в особо тяжких случаях. Сразу и четко пишет какой
pre-/post-condition сработал, в каком variant/invariant мы вылетели.
Всякие python/итд - тоже. Если программа вернула traceback - то там сразу
видно в какой стороке "что-то не так". Hапример отсувие проверки
правильности данных (или в случае eiffel проверка сработала ;). Если
ошибка сразу не очевидна, то есть смысл до этого места добавить логинг.
В зависимости от. Сомтреть отладчиком ДОЛГО и непоятно.
--
Bor.
--- ifmail v.2.15dev5
* Origin: BorHomeLand (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/2541a3dd8ccf.html, оценка из 5, голосов 10
|