|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
Пустые дебаг методы vs полное выпиливание с проекта26.01.2017, 20:57. Показов 3140. Ответов 48
Метки нет (Все метки)
Добрый вечер,
Моё мнение: если макрос - то особо не поиграться с шаблонами и отсутствие статического проверки типа если методы пустышки - то будет ли создаваться под них стек и вызов, или компилятор с оптимизирует всё это дело?
0
|
||||||
| 26.01.2017, 20:57 | |
|
Ответы с готовыми решениями:
48
Пустые методы в перечислении java.util.concurrent.TimeUnit Выпиливание экземпляра класса самим собой |
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 28.01.2017, 23:29 | ||
|
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||
| 28.01.2017, 23:38 [ТС] | ||
|
0
|
||
|
Ушел с форума
|
|||
| 29.01.2017, 10:55 | |||
|
Да, логи, даже очень подробные и хорошо продуманные, далеко не всегда могут точно указать на функцию и номер строки в ней, в которой произошел сбой. Но они позволяют мысленно проследить ход выполнения программы и дойти до этой точки или хотя бы примерно до того места, где был сбой. Вот пример: при работе сервера один из его рабочих потоков начал грузить процессор и "зациклился", сервер перестал отвечать на команды и пришлось прибить его из диспетчера задач. Вот кусок лога: NDSrv [I] registerDevice: status = OK. NDSrv [I] createWorkerPool: numThreads = 8 NDSrv [I] createConnection: addr = 10.0.64.152, port = 80 NDSrv [I] delegateWork: thread = 1 NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... NDSrv [I] thread(1): 973 bytes received, calling handler... ... Здесь видно, что до вызова delegateWork все было в порядке, после чего обработчик потока почему-то стал рекурсивно вызывать сам себя. Одинаковое количество принятых байт еще больше усиливает подозрение. Логи нам не скажут, что кто-то забыл в полиморфный метод хэндлера добавить ключевое слово virtual. Но они скажут, что надо открывать и смотреть код delegateWork и функцию thread. Т.е., как минимум, логи здесь помогли очень сильно сузить круг поисков. А у клиентов окружение иногда настолько нестандартное и заковыристое, что бывает всякое. Иногда проблемы возникают из-за совершенно простых функций, которые до этого годами использовались и никто не жаловался. Иногда приходится сталкиваться с багами в чужом софте, в том числе в антивирусных продуктах, или даже в самой ОС. Разрабатывать софт, который и в таких конфигурациях будет четко работать с железобетонной и неумолимой логикой, довольно тяжело. "Цветастость" багов зашкаливает, можно книгу писать
4
|
|||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
| 29.01.2017, 11:06 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 29.01.2017, 12:19 | ||||
|
Поэтому называть логгер баг хантером ну уж никак язык не поворачивается... Наверное кому что больше встречалось тот ту сторону и защищает
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||
| 30.01.2017, 12:42 | |||||||||||||||
|
вот есть некий уже собранный продукт. он стоит на руках пользователя. время от времени что-то глючит. что - не известно. пользователи ничего толком объяснить не могут. ваша задача - найти и исправить ошибки. ну и что вы будете делать? собирать софтинку на своей локальной машинке? а не факт, что на локальной машине этот баг вообще воспроизведётся как и что вы будете отлаживать? я просто почитаю логи, и буду знать, что происходило. потому что без логов вы не знаете, что на самом деле происходило у клиента. что бы что-то исправить, нужно сначала понять: что именно сломалось. можно просто почитать текст логов. а можно поиграть в телепата-нострадамуса. как вы своим дебегером будете отлаживать стрипованный релиз. и да, программисты вконтактика тоже используют логгирование. внезапно. и какают, наверное, вишенками. логгер ничего не знает о том, что делать в случае краша. он просто запускает аварийный скрипт. что в него записал программист - ему фиолетово.
это сбой. процесс уже умер.
1
|
|||||||||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 30.01.2017, 12:53 | ||||
|
Опять же. Там где есть логирование - это место программист залогировал сам ибо понимал что проблемы могут быть в этом месте. Я же говорю о тех вещах где заранее неизвестно что может возникнуть проблема
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 30.01.2017, 13:43 | ||||
|
основной процесс сообщает: "тред номер 1, запускаю функцию foo" сигнал получает сторожевик данного треда. он знает, что функция foo грубо говоря выполняется за доли секунды. если в течении 1 секунды основной процесс не отчитается о том, что foo успешно выполнена, сторожевик посчитает процесс в состоянии сбоя. все сторожевики сохраняют логи. и запускается аварийный скрипт. что бы выявлять вот эти заранее неизвестные места.
0
|
||||
| 30.01.2017, 14:36 | |
|
0
|
|
| 30.01.2017, 14:36 | |
|
Помогаю со студенческими работами здесь
49
Посоветуйте методы раскрутки для белого проекта Дисковод не читает пустые dvd-r/rw и пустые cd-rw диски. дебаг Дебаг процедуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|