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

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

Можно ли узнать где произошла ошибка на чужом компе? [D7, XP]


igorium@list.ru ©   (2011-12-22 16:13:00) 

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


Dimka Maslov   (2011-12-23 09:48:00) [1]


> igorium ©   (22.12.11 21:44) [16]

Именно потому, что проблема с другим компом. Пусть пользователь чужого компа бибикания считает, а потом скажет.


Ega23   (2011-12-22 22:16:00) [2]


> У меня проблема с чужим компом - со своим я отладкой ищу.


Если одна и та же программа, то у тебя просто ситуации такой не возникало.


igorium   (2011-12-22 21:44:00) [3]


> Dimka Maslov ©   (22.12.11 20:59) [15]
> Ещё можно в различные критические места понатыкать Beep
> и по количеству бибиканий локализовать место ошибки. Сам
> так делал.


Идея смешная :)
У меня проблема с чужим компом - со своим я отладкой ищу.


Dimka Maslov   (2011-12-22 20:59:00) [4]

Ещё можно в различные критические места понатыкать Beep и по количеству бибиканий локализовать место ошибки. Сам так делал.


igorium@list.ru   (2011-12-22 19:00:00) [5]

Я уже понял.
Правда только после копания Гугла :)
Но идея понравилась, спасибо.


Ega23   (2011-12-22 18:35:00) [6]


> Спасибо, я в курсе переводов.


Я тебе не перевод, а потенциальное место, где косяк.
А где оно - только тебе известно, я же не видел кода твоей программы.

WriteToLog - это условная штука была, реальной такой, естественно, нет.


igorium@list.ru   (2011-12-22 18:18:00) [7]

Ega23, stas
Спасибо, я в курсе переводов.
Для того, чтобы найти починить программу надо найти где сломано...
Вопрос только в этом.
Починить я смогу.
Насчет Out of memory - я кажется нашел причину. Искренне надеюсь на это :)

Из всего вышесказанного мне понравилось WriteToLog.
Буду копать в этом направлении. Пошел читать мануал.


stas   (2011-12-22 17:53:00) [8]

igorium@list.ru   (22.12.11 17:26) [9]
Out of memory - программа растет (большими темпами) в памяти по ходу работы?
если да, то где-то утечка памяти.


Ega23   (2011-12-22 17:50:00) [9]


> И у всех ошибки разные - "Range check error", "Access violation",
>  "Out of memory".


Range check error - не по тому индексу массива обращаешься, такого ещё нет
Access violation - обращаешься к ещё не созданному или уже убитому объекту.
Out of memory - не уничтожаешь объект(ы) в процессе работы.

Это с вероятностью 99%, хотя возможны и другие варианты.


igorium@list.ru   (2011-12-22 17:26:00) [10]

Спасибо за массовое желание помочь.
Программа работает с большим количеством графических файлов JPEG, читаю у них информацию.
У меня все нормально обработало ~23'000 файлов.
У кого то выдает ошибку на ~50'000 файлов, у кого-то на ~1800 файлов.
И у всех ошибки разные - "Range check error", "Access violation", "Out of memory".
Скорее всего ошибки детские - где-то что-то не учел.
У меня много динамических массивов, переменных.
Но где, что произошло я не в состоянии узнать без ~логов.


stas   (2011-12-22 16:32:00) [11]

Anatoly Podgoretsky ©   (22.12.11 16:31) [6]
Это не мне)


stas   (2011-12-22 16:31:00) [12]

igorium@list.ru   (22.12.11 16:13)
А что за программа? и что пишет там где не работает?


Anatoly Podgoretsky   (2011-12-22 16:31:00) [13]

> stas  (22.12.2011 16:15:01)  [1]

ASSERT знает все, но с ним сложно. А если человек в состоянии прочитать и
сообщить информацию с экрана, то можно не усложнять.


OW   (2011-12-22 16:29:00) [14]


> http://www.eurekalog.com/index_delphi.php

вещь!

можно Jcl помотреть
 JclDebug,
 JclHookExcept,
примерно тоже самое, что и в Эврике, но пилить руками больше, как мне показалось


Ega23   (2011-12-22 16:23:00) [15]

Имей привычку потенциально-опасные места заключать в try..except с рерайзом E.Message = E.Message + ' procedure TMyObject.Foo' (например).
Не гаси исключения, а пиши их в лог.
Не создавай коннект к базе в дизайн-тайм.
Следи за соответствием версий всяких OLEDB-провайдеров, MSOffice и прочих примочек, которые ты будешь дёргать из своей программы.
Не ленись создавать Debug и Release сборки. В дебаге логгируй действия
{$IFDEF DEBUG}
 WriteToLog ...
{$ENDIF}

Ну и т.д.


Германн   (2011-12-22 16:20:00) [16]

http://www.eurekalog.com/index_delphi.php


MBo   (2011-12-22 16:17:00) [17]

Assert знает о строках.


stas   (2011-12-22 16:15:00) [18]

писать лог как вариант.
Номер строки не вернет однозначно, откуда exe файлу знать о строках в твоей апрограмме. Вернет адрес, вроде по адресу можно как-то разобрать.


Наверх

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