Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удалённый дебаг у заказчика. По телефону/мэйлу/етс... / 16 сообщений из 16, страница 1 из 1
01.12.2003, 11:43
    #32339194
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Может тоже кого тема заинтрересует.

Есть ли тут люди, работающие на удалённого заказчика. У меня вот иногда возникают ситуации, когда приходится отлаживать программу при помощи заказчика по телефону (на месте всё работает, а там - увы...)
Ясно-понятно, у заказчика нету VС, ни исходников, чтоб подебажить, да и если бы были - толку было бы немного.

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

Кто как ещё эту ситуацию разруливает?
С логами - понятно. А ещё?
...
Рейтинг: 0 / 0
01.12.2003, 14:33
    #32339469
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
бывает имеет смысл воспроизвести условия на отдельной, чистой ЭВМ (если есть конечно свободная). нужно создать аналогичные условия для программы (установленные программы, ОС, базы ит.д.) и попытаться воспроизвести ошибку. тогда ясно будет как ее решить.
...
Рейтинг: 0 / 0
01.12.2003, 17:22
    #32339776
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
ИМХО, конечно, но заказчик не должен заниматься ни отладкой, ни выяснением причин ошибки. Хорошо тебе заказчик терпеливый попался.

А чем тебе лог не нравится ? У меня, например, при возникновении ошибки пишется не только сам текст ошибки, но и стэк вызовов с аргументами. Если программа зависла, то тоже есть методы сохранения текущего состояния в лог.
...
Рейтинг: 0 / 0
02.12.2003, 07:42
    #32340126
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
2 Maratka: с машинами проблем нет, но, заказчиков много. На всех машин не наберёшься, и жаль времени инсталлировать целую машину.

2 Tracer: а можно по-подробнее про стек? :)
У нас просто проблема с бета-тестерами. А у меня всё оттестировать времени не хватает. И все возможные ситуации просто охватить не удастся даже с бета-тестерами. К примеру, проект один работал в куче мест уже больше года, и вот недавно выловили новую ситуацию с неинициализацией сом-объекта.
Лог мне не не нравится, он у меня есть. И часто спасал. Но программа по ходу создаёт много всяких разных вещей и потом после себя их убивает. Поэтому по логу оттестировать эти временные вещи не получится. Нужно программу останавливать и смотреть. Вот ещё бы во время остановки можно было бы делать дамп всех локальных переменных - это просто песня была бы! :) У меня есть идея, но она тяжелокодовая.
...
Рейтинг: 0 / 0
02.12.2003, 09:48
    #32340212
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Про стэк примерно так : написана некоторая библиотека обработки ошибок, есть правила написания кода. Код выглядит примерно так -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
void Class1::Method1( int param1, const char* param2 )
{
    E_TRY
    {
         E_Entry(  "Class1::Method1( %i, %s ), param1, param2"  );

         .....

         Method2( param1 );

         .....

         E_ExitEntry();
    }
    E_CATCH_SRC(  "Class1::Method1"  )
}

void Class1::Method2( int param1 )
{
    E_Entry(  "Class1::Method2( %i )" , param1 );

    .......

    E_ExitEntry();
}



В E_Entry для каждого треда сохраняется массив строк методов, в E_ExitEntry соотвественно удаляется.
Если происходит какой нибудь exception, то в catch'e этот массив и скидывается в log файл.

Выглядит примерно так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 -----------------------------------------------------------------------------
 
Error Log File, run at  18 : 04 : 53  on  12 / 01 / 03 .
 -----------------------------------------------------------------------------
 
Error Stack:
 BvCallQueue::Poll
  BvCallQueue::PollOnce(  0  )
Error Source:
 IID_IPtBvCallQueue
Error Message:
  80004005  COM error, Description - Connection failure
...
Рейтинг: 0 / 0
02.12.2003, 10:15
    #32340252
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
2Tracer

Да, все правильно - единственное - это стек вызовов - я так понимаю до него вам достучаться не удалось (т.е. написали свой аналог)?
...
Рейтинг: 0 / 0
02.12.2003, 10:18
    #32340258
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
2Tracer

Еще вопрос - у вас есть разделение по потокам или все пишется в один файл?
...
Рейтинг: 0 / 0
02.12.2003, 10:27
    #32340273
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
maratkaбывает имеет смысл воспроизвести условия на отдельной, чистой ЭВМ (если есть конечно свободная). нужно создать аналогичные условия для программы (установленные программы, ОС, базы ит.д.) и попытаться воспроизвести ошибку. тогда ясно будет как ее решить.
Ты вкурсе нет, насчет очередности установки MSSQL сервера и офиса, если сначало поставить MSSQL, а потом офис, то MSSQL работать не будет(это и мелкософт признал).
И ты думаешь что заказчик вспомнит что и в какой последовательности он ставил?
CEMb Логи, логи и еще раз логи
...
Рейтинг: 0 / 0
02.12.2003, 10:29
    #32340277
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Да, все правильно - единственное - это стек вызовов - я так понимаю до него вам достучаться не удалось (т.е. написали свой аналог)?
Да пришлось писать свой, поскольку иначе требовалась отладочная информация.

Еще вопрос - у вас есть разделение по потокам или все пишется в один файл?
Не понял вопроса, есть и разделение по потокам и все пишется в один файл.
...
Рейтинг: 0 / 0
03.12.2003, 08:24
    #32341495
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
2 Tracer: Спасибо! У меня была подобная идея. Тока я хотел накатать макрос, в котором инкрементируется счётчик строк. (соответственно его надо вставить в каждую строку) Потом по сатсн - выдавать номер строки, где умерло.

Потом была ещё совсем чудовищная идея - сделать надкомпилятор, который добавляет в код код, сохраняющий имена, типы и смещения локальных переменных.

Типы можно попробовать динамически распознать(или нет?)

2 DJStealth: Логи не всегда помогают. Вот мой пример. Прога в процессе создаёт linked_server. Тут вот(до сих пор ещё с Glory не разобрался) надо проверить получил ли SQL-сервер доступ к ресурсу L_S или нет? Писать для этого внутри код для проверки - лень и код и так большой. К тому же это не единственная штука, которая потом убивается. Вобщем в лог всего не внесёшь. Но лог есть :) Он не может не быть! =)
...
Рейтинг: 0 / 0
03.12.2003, 10:37
    #32341628
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
автор2 Tracer: Спасибо! У меня была подобная идея. Тока я хотел накатать макрос, в котором инкрементируется счётчик строк. (соответственно его надо вставить в каждую строку) Потом по сатсн - выдавать номер строки, где умерло.
А зачем так сложно ? Есть ведь __line__, и __file__
...
Рейтинг: 0 / 0
03.12.2003, 10:45
    #32341643
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
если это VC, то мы используем-
- OutputDebugString()/TRACExxx (DEBUG) + DebugView (www.sysinternals.com)
(это все же попроще будет, чем создавать собственные логи).
- _ASSERTE(...) (позволяет фиксировать линию утверждения - это конечно в дебаг-версии также т.е. клиенту нужно поставлять дебаг.)
- отладочные сообщения - это банальность.
- посмотри - Керниган, Пайк "Практика программирования." - там неплохие главы про отладку-тестирование.
...
Рейтинг: 0 / 0
04.12.2003, 08:01
    #32342832
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Tracer Есть ведь __line__, и __file__
Не знал, не знал.. Круто.. Спасибо, век_живи_век_учись :)


maratkaOutputDebugString

Ага, тоже не знал, надо будет весь топик почитать! Спасибо, и сисинтерналс тоже гляну.
...
Рейтинг: 0 / 0
11.12.2003, 17:58
    #32351074
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Тема еще актуальна?
Посмотри пример
продолжение
...
Рейтинг: 0 / 0
15.12.2003, 10:38
    #32352349
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Connection to server adam.stup.ac.ru failed (The server is not responding.)

Давай так, в двух словах :)

Я тут, похоже, последний день.
...
Рейтинг: 0 / 0
18.12.2003, 17:44
    #32357185
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалённый дебаг у заказчика. По телефону/мэйлу/етс...
Чисто теоретически:

еще можно скриншоты програмно делать + логи + мыло.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удалённый дебаг у заказчика. По телефону/мэйлу/етс... / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]