Отладка. Логгирование
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 07.08.10 12:03
Оценка:
Приветствую.
Есть программа. Со всякой кучей потоков и ветвлений. Пытаюсь логгировать (log4net), но каждый раз получается так, что надо идти пошагово до ошибки, ибо ошибка может быть не рядом с эксепшеном.
Возникла у меня мысль1: логгируем всё. Абсолютно всё. Пусть это будет замедлять работу программы, но результат, по-моему, того стоит. По крайней мере в режиме дебаг.

Вопрос: есть ли какие-то средства (например, к тому же log4net), чтобы так настроить логгирование? (Если пользоваться log4net, то не охото в каждую функцию вставлять строчки логгирования.)

А потом возникла мысль2: это ведь существенно поможет и со сбором ошибок от пользователей. Например: прога пишет все свои операции. Вдруг прилетает эксепшен. Так она отправляет мне (например, по почте), весь ход процесса до этой ошибки в этом потоке. Может не весь, а какие-то "верхушки", а я, если посмотрев лог, решу, что данных не достаточно, запрошу детализацию.

Имеет смысл так делать или сейчас принято не так?
Спасибо.
Вселенная бесконечна как вширь, так и вглубь.
Re: Отладка. Логгирование
От: MozgC США http://nightcoder.livejournal.com
Дата: 07.08.10 12:43
Оценка: 2 (1)
Имеет смысл делать все, что поможет вам исправлять ошибки. Тут лучше перебздеть, чем недобздеть. И в то же время надо знать грань. Писать каждые несколько строк что-то типа Log("Entering printing invoice block") — это лишнее.

Я в корпоративном приложении детально логирую все возникшие исключения (контекст (операция) в котором произошло исключение, тип и текст исключения и всех вложенных исключений, стек, время возникновения исключения, компьютер на котором возникло исключение). Дополнительно я сделал компонент, который размещается на всех формах и подписывается на основные события нужных контролов и логирует изменения в этих контролах, т.е. в логе оказывается что-то типа:

07-08-2010 14:12:15 Form 'View Stock' activated
07-08-2010 14:12:20 ComboBox 'cbCountry', selected item changed: 'Russia'
07-08-2010 14:12:20 ComboBox 'cbCountry', selected item changed: 'Ukraine'
07-08-2010 14:12:20 CheckBox 'Send balance notifications' new checked state: True

Такой лог менее полезен чем лог исключений, но иногда все-таки помогал и он.
Раз в пару недель я полностью просмотриваю лог исключений и исправляю обнаруженные баги.
Re[2]: Отладка. Логгирование
От: sunshine Россия https://angel.ru/?src=rsdn
Дата: 07.08.10 13:06
Оценка:
Здравствуйте, MozgC, Вы писали:

Задачу, которую вы описываете, полностью (и даже больше) решает средство IntelliTrace из 2010-й студии. В случае, если у юзера происходит какая-то непонятная ошибка, на его компьютере устанавливается утилита, которая записывает полностью ход выполнения программы. Он присылает вам файлик с этими данными. Вы его загружаете в отладчик и смотрите все что произошло у юзера. Сам не юзал, просто прочитал в документации об этом.
Правда, стоит эта радость немерено денег (доступна только в Ultimate версии). Но, может быть, удастся приобрести подешевле?
Принимаю платежи в любой валюте
Re[3]: Отладка. Логгирование
От: 0K Ниоткуда  
Дата: 07.08.10 16:29
Оценка:
Здравствуйте, sunshine, Вы писали:

S>на его компьютере устанавливается утилита, которая записывает полностью ход выполнения программы


Скажите, а что за утилита такая? Про интелитрейс знаю (можно просматривать по шагам с возвратом назад) а вот про такую интересную утилитку слышу вервые.
Re[4]: Отладка. Логгирование
От: sunshine Россия https://angel.ru/?src=rsdn
Дата: 07.08.10 17:40
Оценка: 11 (3)
Здравствуйте, 0K, Вы писали:

S>>на его компьютере устанавливается утилита, которая записывает полностью ход выполнения программы


0K>Скажите, а что за утилита такая? Про интелитрейс знаю (можно просматривать по шагам с возвратом назад) а вот про такую интересную утилитку слышу вервые.


Сейчас смог найти только описание варианта использования этого функционала для тестировщиков:
http://msdn.microsoft.com/en-us/library/dd264954.aspx

Не помню, где прочитал о том, что это можно и для обычных юзеров использовать (теоретически возможно, что мог и перепутать, хотя почему-то такое чувство, что об этом и читал).
Кстати, про особенности интеллитрейс пишут, что он "позволяет возвращаться назад при отладке". Но в этом ведь ничего нового нет, это уже и в 2005-й и 2008-й студиях было возможно (путем перетаскивания желтого курсора слева, означающего текущую точку выполнения).
Принимаю платежи в любой валюте
Re[3]: Отладка. Логгирование
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 08.08.10 23:57
Оценка:
Здравствуйте, sunshine, Вы писали:

S>Правда, стоит эта радость немерено денег (доступна только в Ultimate версии). Но, может быть, удастся приобрести подешевле?


Значит идея хорошая.
Кажется, это не сильно трудно реализовать. Правда, будет геморно писать прогу — в каждую функцию подробно вручную вставлять логгирование.
Вселенная бесконечна как вширь, так и вглубь.
Re: Отладка. Логгирование
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 09.08.10 00:19
Оценка:
Я в Немерле пользуюсь несложным макросом вставляющим код логирования во все функции специально помеченных классов, включая вложенные.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Отладка. Логгирование
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 09.08.10 00:22
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Я в Немерле пользуюсь несложным макросом вставляющим код логирования во все функции специально помеченных классов, включая вложенные.


Ну, у меня не Немерле, а до сих пор 2-ой фреймворк.
Вселенная бесконечна как вширь, так и вглубь.
Re: Отладка. Логгирование
От: anton_t Россия  
Дата: 10.08.10 04:25
Оценка: 5 (2)
Здравствуйте, Real 3L0, Вы писали:

R3>Приветствую.

R3>Есть программа. Со всякой кучей потоков и ветвлений. Пытаюсь логгировать (log4net), но каждый раз получается так, что надо идти пошагово до ошибки, ибо ошибка может быть не рядом с эксепшеном.
R3>Возникла у меня мысль1: логгируем всё. Абсолютно всё. Пусть это будет замедлять работу программы, но результат, по-моему, того стоит. По крайней мере в режиме дебаг.

R3>Вопрос: есть ли какие-то средства (например, к тому же log4net), чтобы так настроить логгирование? (Если пользоваться log4net, то не охото в каждую функцию вставлять строчки логгирования.)


R3>А потом возникла мысль2: это ведь существенно поможет и со сбором ошибок от пользователей. Например: прога пишет все свои операции. Вдруг прилетает эксепшен. Так она отправляет мне (например, по почте), весь ход процесса до этой ошибки в этом потоке. Может не весь, а какие-то "верхушки", а я, если посмотрев лог, решу, что данных не достаточно, запрошу детализацию.


R3>Имеет смысл так делать или сейчас принято не так?

R3>Спасибо.

PostSharp (http://www.sharpcrafters.com/postsharp) и log4postsharp (http://code.google.com/p/postsharp-user-plugins/wiki/Log4PostSharp) к нему.
Re[3]: Отладка. Логгирование
От: hardcase Пират http://nemerle.org
Дата: 10.08.10 05:41
Оценка:
Здравствуйте, Real 3L0, Вы писали:

R3>Ну, у меня не Немерле, а до сих пор 2-ой фреймворк.


Nemerle, собственно, на втором фреймворке и обитает.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.