|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
Пустые дебаг методы vs полное выпиливание с проекта26.01.2017, 20:57. Показов 2968. Ответов 48
Метки нет (Все метки)
Добрый вечер,
Моё мнение: если макрос - то особо не поиграться с шаблонами и отсутствие статического проверки типа если методы пустышки - то будет ли создаваться под них стек и вызов, или компилятор с оптимизирует всё это дело?
0
|
||||||
| 26.01.2017, 20:57 | |
|
Ответы с готовыми решениями:
48
Пустые методы в перечислении java.util.concurrent.TimeUnit Выпиливание экземпляра класса самим собой |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 27.01.2017, 16:15 | |||
|
пользователям по барабану. зачастую они даже не знают об их существовании. сами же логи должны отражать состояние системы настолько детально, насколько это возможно, что бы по ним можно было понять, что вообще происходит. который крутится на машинках, которые находится на другом конце света? раз в 3 часа, или в 3 дня, или в 3 недели происходит зависание сервиса никто не знает какого именно. никто не знает почему. и никто не может угадать на какой именно машинке это случится в след. раз. в нашей тестовой среде баг не воспроизводится. расскажите мне, как вы будете это отлаживать? как вам поможет ваш отладчик? юнит-тесты вам уже не помогли. -------------------------------------------------------------- если баг воспроизводится только в боевых условиях, то и ловить его нужно тоже на бою я активирую логгер, у которого под контролем все критичные и не очень точки. особенно вызовы низкоуровневого апи. и сделаю апдейт боевых машин. как только в след. раз какая нибудь из них встанет колом, а у меня на руках будет вся история развития болезни. ну а после ремонта можно будет опять отключить логгер
3
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||
| 27.01.2017, 16:34 | |||||
Сам об этом говорил...
0
|
|||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 27.01.2017, 16:38 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 27.01.2017, 16:51 | |||||||||
|
есть ещё вот такой интересный дизайн:
http://rextester.com/RBHL49675
что бы запихивать в лог готовые данные, мы запихиваем в него функции-добывальщики данных. однако, если логгер в выключенном состоянии, то он их дергать не будет. по этому издержки на выключенный лог минимальны. киллер-фича: такой подход позволяет запускать/отключать логгирование удаленно. и получать логи самой разной детализации хоть прямо к себе на почту. Добавлено через 3 минуты что б потом в случае проблем, можно было по шагам глянуть, что происходило и куда привело. удаленный процесс крашнулся. а у вас на руках трасса вызова функций, и значения всех критических данных. клева жеж? Добавлено через 1 минуту потому что пользователь - она, а не программист. программист - разработчик. Добавлено через 4 минуты
3
|
|||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 27.01.2017, 16:59 | ||||
Имея доступ на диск где лежит программа можно воспользоваться отладчиком. Тут речь именно о багах а не средо-зависимых крешах которые к логике самой программы не имеют прямого отношения(лишь косвенно)
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 27.01.2017, 20:11 | |||||
|
как именно вы собрались отлаживать стрипованный релизный бинарь? а логгер - то самое ПО, с помощью которого отлавливают ошибки. такое впечатление, как будто бы вы отлаживать умеете только свой собственный проект на локальной машинке. где нибудь в дебаге в пошаговой отладке. пользователь вам вообще ничем не поможет. максимум на что он способ: "что-то не работает". вы сами по ssh, или ещё как то будете заходить на удаленную машинку, выкачивать оттуда логи, смотреть в каком состоянии система, и тп. и логи никто не отменял. вообще по уму, годная система логгирования в случае краша должна уметь аварийные действия: прислать логи о происшествии, перезапустить сервис, и тп.
0
|
|||||
| 27.01.2017, 20:40 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 27.01.2017, 21:04 | ||
|
и суметь сохранить накопленные данные. и оповестить о происшествии. в случае краша, собственно, логгер - единственный компонент системы, который ещё на плаву. и который может что то сделать. на него вешается некий произвольный обработчик. в котором можно прописать какие то конкретные действия. например: послать логи разрабам, и перезапустить сервис.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 27.01.2017, 21:20 | |
|
1
|
|
| 27.01.2017, 22:25 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||||||||
| 27.01.2017, 23:33 | |||||||||||||
|
Добавлено через 23 минуты Лучше просто в тех местах где логируются критические сбои вызвать ответственные компоненты по тем операциям которые нужно выполнить в случае возникновения проблемы. Например
0
|
|||||||||||||
|
Ушел с форума
|
|
| 28.01.2017, 09:47 | |
|
MrGluck, у нас на работе такие триллеры постоянно.
Так что hoggy все верно пишет. Хорошо продуманная система логирования повышает шансы на успешную диагностику таких трудных багов.
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 28.01.2017, 10:35 | ||
|
Под багом как правило подразумевается определенная ошибка в логике программы, которую программист не заметил сразу. Если где либо в коде используется логирование, то это как правило те места, где разработчик понимает "вот в этом куске кода могут возникнуть проблемы при определенных условиях", и соответственно пишет в лог, если такая ситуация возникает. Логи конечно же в каком то случае могут служить для отловки багов, но это лишь "полезный побочный эффект" их использования а не прямое назначение, как это позиционируется в данной теме. И тогда финальный киллер-вопрос тем, кто позиционирует логгер в первую очередь как "баг хантер". Вопрос: а что если в самом логгере есть баг? Как тогда багнутый логгер поможет отдебажить это, если он сам не работает? Думаю теперь должно быть очевидно, что дебаг и лог никак не связаны друг с другом
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 28.01.2017, 10:41 | ||
|
Потому и зацепило, что жизненно)
0
|
||
|
Ушел с форума
|
|||||
| 28.01.2017, 22:24 | |||||
|
там заблудишься. Когда ошибка случится, ты даже не сможешь понять, с какого конца к ней подступиться и где вообще искать концы. Логи позволяют диагностировать именно логические ошибки в ПО, т.е. когда приложение не падает, но ведет себя не так, как было задумано. Если логирование делалось "по уму", то при наличии воспроизведения можно очень быстро хотя бы определить проблемный компонент, остальное, как правило, уже дело техники. У нас в продуктах компании логирование давно стало обычной практикой и сейчас практически любой баг-репорт, который приходит, в обязательном порядке содержит архив с логами соответствующих компонентов. А компонентов много... ретроспективе, а также в том, чтобы иметь возможность быстро оценить ее реакцию на те или иные изменения. Как правило, это используется для диагностики ошибок, хотя их можно использовать, например, для анализа производительности и для других задач. Причем логи особенно хороши для неинтерактивных приложений, не имеющих графического интерфейса - службы, серверы, подгружаемые модули/плагины и т.д.
друг друга Как и ассерты, как и юнит-тесты, как и контракты и т.п., они позволяютповышать качество софта и облегчать диагностику ошибок.
3
|
|||||
| 28.01.2017, 22:36 [ТС] | |
|
0
|
|
|
Ушел с форума
|
|
| 28.01.2017, 22:36 | |
|
И еще хотел бы вот что добавить на счет логов.
По логам иногда можно узнать много интересного по поводу программного окружения. Например, клиент пишет: у меня не работает такая-то функция. Код ошибки такой-то, система Windows 7, вот скриншот. Ты достаешь соответствующую версию софта, ставишь на Windows 7, запускаешь - и все работает. УМВР, как говорится. Что делать? Как искать ошибку? Начинаешь смотреть логи. Оказывается, что у клиента Windows 7 стоит на Citrix. А еще там какой-то израильский антивирус. И еще машина в домене, название которого содержит кириллические имена (просто подозрительно, но все же). И т.д. Когда ты проинсталлишь весь этот софт себе на тестовый стенд, то вдруг обнаружишь, что и у тебя теперь функция тоже перестала работать. Вот оно, воспроизведение ошибки. А там, где воспроизведение, там и до исправления рукой подать (в 99% случаев). У нас на работе такие "триллеры" - обыденность. Клиентов много, компьютеров десятки и сотни тысяч, разные окружения, настройки, политики, софт и т.д. Логи реально помогают докапываться до сути. Не представляю, что без них делать.
2
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 28.01.2017, 22:39 [ТС] | |
|
Убежденный, странный у вас софт если падает от названия домена и установленного антивируса) Прям вижу уже на обороте диска с игрой системные требование : "не устанавливайте AVAST и не используйте хостинга Trololo"
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 28.01.2017, 22:57 | ||||
|
Ух сколько написал ))
0
|
||||
| 28.01.2017, 22:57 | |
|
Помогаю со студенческими работами здесь
40
Посоветуйте методы раскрутки для белого проекта Дисковод не читает пустые dvd-r/rw и пустые cd-rw диски. дебаг Дебаг процедуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|