Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Возможности logger-а  (Прочитано 5318 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kultura
Помогающий

ru
Offline Offline

« : 20-03-2009 19:48 » 

Что должен уметь хороший лог?

Например, отслеживать вход и выход в функции, изменения параметров, флаги комманд - это надо? И насколько сложно в реализации?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 20-03-2009 19:55 » 

Kultura, Ты хочеш писать свой профилировщик? Если нет, то обычно логирование это пассивное создание. Сказали ему залогировать, он сделал, нет, он молчит.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 20-03-2009 20:02 » 

в исходнике самбы видел

в каждом вызове определяющей функции вызов логгера типа

writelog(level,code,msg)

привел по памяти
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Kultura
Помогающий

ru
Offline Offline

« Ответ #3 : 21-03-2009 09:56 » 

Finch, нет, оптимизировать мне особо нечего. Прочитал о профилировщиках, разобрался хоть что это такое, спасибо.

Вопрос, скорее, в том, как искать, где ошибка. Например, программа работает , работает, и зануляется указатель. Ну а в дебаге (у меня стоит vc++ 2008) не смог найти это место. А как его еще отыскать  Здесь была моя ладья...?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 21-03-2009 10:35 » 

Ну сушествуют внутрение механизмы. Например макрос assert из assert.h. В дебаг режиме, если аргумент макроса true то программа продолжает работать, при аргументе  false программа прерывается с выводом в консоль строчки, в которой произошел вылет.
Простой пример:
Код:
   char *ch=NULL;
   assert(ch);
При выполнении выдает ошибку    main.cpp:73 int main(): Assertion 'ch' failed.
Если заметил, выдается не только имя файла но и имя самой функции и номер строки в файле.

Теперь, когда делается релиз версия, то все assert игнорируются. Поэтому не рекомендуют делать важные для программы вычисления или вызовы функций в теле assert.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Kultura
Помогающий

ru
Offline Offline

« Ответ #5 : 21-03-2009 14:06 » 

Finch, спасибо.
Еще по дебаг - режиму: там есть вкладка Watch, и на переменные можно сделать Add Watch, вопрос: как этим пользоваться?
Может быть есть средство в дебаге, позволяющее следить за всеми изменениями конкретной переменной?  Здесь была моя ладья...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 21-03-2009 16:37 » 

Ты знаеш, что такое трассировка. breakpoint?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #7 : 23-03-2009 04:26 » 

если нужно отслеживать, как вышли из области видимости (по исключению или в штатном режиме), то можно при входе в области видимости создавать объект
в конструкторе: проверяем уровень логирования прочую фигню, выодим в лог, если нужно
в деструкторе: проверяем std::uncaught_exception(); если true значит было исключение кидаем спец. сообщение в лог
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines