Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что делал пользователь до глюка?


Страницы:   1 2

IGray ©   (2007-04-19 12:04:00) 

Чтобы воспроизвести сбой мне нужно знать сабж..
Кто занимался подобным вопросом?

Пока вижу только два варианта:
1) Доработать компонент TActionList - чтоб он все выполняемые
экшены куда-нибудь писал - и везде его юзать.

2) Ловить все сообщения - через TApplicationEvents.ApplicationEventsMessage, к примеру..
Но непонятно как правильно фильтровать и декодировать поступающие сообщения...

Кто-нибудь занимался подобными проблемами?
Поделитесь пожалуйста!


SpellCaster   (2007-04-25 11:04:00) [1]

> [25] clickmaker ©   (24.04.07 11:45)

Да вот понимаешь, сообщения "AV at address 00000000" как-то не очень хватает для определения, в каком месте произошёл косяк. А протоколировать все методы - это убиццо можно...


clickmaker   (2007-04-24 11:45:00) [2]


> как разобраться?

ну как, как... по-русски, конечно, с поллитрой )
На самом деле, Exeption.Message в большинстве случаев достаточно. А если ты протоколируешь вызовы всех методо, то stack trace вовсе ни к чему.
У меня был проект, в котором во всех жизненно важных процедурах был пролог и эпилог для записи в лог, типа
procedure AAA();
begin
  LogMethodCall('AAA дата-время, параметры, что-то там еще... - Enter')
  try
     ...
     LogMethodCall('AAA дата-время, параметры, что-то там еще... - Leave')
  except
      on E: Exception do LogError(e.Message)
  end;
end;

как вариант.
Но лог может получиться не маленьким, мягко говоря...


SpellCaster   (2007-04-24 11:32:00) [3]

А как извлечь полезную инфу из отловленного эксепшна? Тот же стек, например. И еще, как его юзать? )) Вот в Яве-то всё просто, там он на нормальном человеческом языке пишется, а тут как разобраться?


clickmaker   (2007-04-20 16:49:00) [4]


> [22] Игорь Шевченко ©   (20.04.07 13:42)

да это шутка была


Игорь Шевченко   (2007-04-20 13:42:00) [5]


> а если у пользователя нет какого-то msvcr80.dll или vcl70.
> bpl


то у него нет шансов запустить нужную программу, а раз программу нет шансов запустить, то она верной дорогой отправляется в корзину, попутно вызывая четкие определения умственных способностей разработчика и его родственников по материнской линии.


clickmaker   (2007-04-20 12:28:00) [6]


> программа должна работать только в конфигурации разработчика

золотые слова!
а если у пользователя нет какого-то msvcr80.dll или vcl70.bpl - проблемы индейцев шерифа не волнуют ;)


Плохиш   (2007-04-20 12:23:00) [7]


> clickmaker ©   (20.04.07 12:06) [18]
>
> > [17] Плохиш ©   (20.04.07 11:55)
>
> дык на "нерабочей", как правило, всё и работает.

Неправильные у вас какие-то "нерабочии" :-)
Давно как-то читал, что "программа должна работать только в конфигурации разработчика, если у пользователя конфигурация компьютера отличается, то это проблемы пользователя, а не разработчика" ;-)


Сергей М.   (2007-04-20 12:12:00) [8]


> IGray   (19.04.07 12:04)


см. SetWindowsHookEx (WH_JOURNALRECORD, WH_JOURNALPLAYBACK)


clickmaker   (2007-04-20 12:06:00) [9]


> [17] Плохиш ©   (20.04.07 11:55)

дык на "нерабочей", как правило, всё и работает. Вся ботва начинается именно на рабочих :)


Плохиш   (2007-04-20 11:55:00) [10]


> clickmaker ©   (20.04.07 11:43) [16]
> а если это файл-менеджер и ты нажал (случайно) shift+space+down+del+Y ?

Что ж я больной на рабочей машине тестировать? :-)


clickmaker   (2007-04-20 11:43:00) [11]


> слепой десятипальцевый ввод данных

а если это файл-менеджер и ты нажал (случайно) shift+space+down+del+Y ?


Плохиш   (2007-04-20 11:35:00) [12]


> я бы сказал: от сосбенностей некоторых юзеров вводить эти
> данные

Если программа грохается от особенностей юзеров вводить данные, то место такой программы в корзине, без вариантов.

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


clickmaker   (2007-04-20 11:25:00) [13]


> а от особенностей данных

я бы сказал: от сосбенностей некоторых юзеров вводить эти данные )
Но для этого и придумывают всякие MaskEditы и прочие феньки


Desdechado   (2007-04-20 11:23:00) [14]

Часто ошибки происходят не от последовательности действий, а от особенностей данных. При этом большинство данных ошибок не вызывает. Поэтому юзера берут за жабры, чтобы узнать те самые данные.


clickmaker   (2007-04-20 11:21:00) [15]


> [9] Германн ©   (20.04.07 02:36)

да это я х... спорол-с... если давятся, то конечно же до OnException не дойдет. Имел в виду неотловленные вообще исключения


Игорь Шевченко   (2007-04-20 11:19:00) [16]


> Чтобы воспроизвести сбой мне нужно знать сабж..
> Кто занимался подобным вопросом?


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

Потом отказался - писанины много.


Германн   (2007-04-20 02:52:00) [17]

И "если они давятся в коде", то лучше взять у Кэтмара метлу! Всяко чище будет на улицах и во дворах! :)


Германн   (2007-04-20 02:36:00) [18]


> clickmaker ©   (19.04.07 13:02) [3]
>
> ну навставляй во все процедуры запись в текстовик. Время,
>  имя метода, параметры.
> Прикрути еще обработчик Application.OnException на случай,
>  если они где-то не ловятся или давятся в коде.

Если они "давятся в коде", то уже никто не спасёт ОРД! :)


Jeer   (2007-04-19 23:58:00) [19]


> IGray   (19.04.07 12:04)


Проще проектировать систему так, чтобы у пользователя не было права на ошибку:)


ANB   (2007-04-19 13:21:00) [20]


> в смысле - более централизованного и менее замороченного
> ;-)

По моему опыту, не взяв юзера за жабры - очень тяжело воспроизвести ошибку. Или надо вести настолько зверское логирование, что оно уложит рабочую систему. В нашей конторе (и многих других, в которых я работал) целый отдел занимается разбором и воспроизведением ошибок.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо