Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Отладка кода


Автор: sai_NT 20.6.2008, 22:55
Программирую относительно давно, но особо остро вопрос с отладкой стал только сейчас. Работаю с компонентом TIdHTTP и запрашиваю гугловские страницы. Куки у этих товарищей TIdCookieManager временами не любит, вылетая с легендарной ошибкой Access violation at address ... Эта ошибка возникает не часто, но очень мешает процессу, в отладчике так долго сидеть не могу и терпения не хватает.
Внимание вопрос! Как можно остановиться перед моментом возникновения ошибки или хотя бы в ее момент возникновения, но чтобы была возможность просмотреть значения нужных мне переменных? Возможно есть вообще дргие методы (WinDBG etc.)

P.s.
Не хотелось бы брать все в конструкцию try...

Автор: Alkash 21.6.2008, 06:30
Выполнить до? Или ставить брейкпойнты...

Автор: Exai1e 21.6.2008, 09:05
Запусти программу из Delphi, после вылета ошибки нажми F7, и прыгнеш на примерную строку где могла произойти ошибка, посмотри код выше этой строки, расставь там бряки =)

Автор: ama_kid 21.6.2008, 09:20
sai_NT, поставь себе какой-нибудь модуль отслеживания утечек памяти (типа http://v.mahon.free.fr/pro/freeware/memcheck/) - думаю, раз ошибка возникает - значит у тебя в каком-то месте код написан малость криво, есть вероятность, что он тебе это место укажет. Если нет - тогда посмотришь его логи после того, как вылезет ошибка, в частности - стек вызова процедур, по крайней мере - сузишь область поиска...

Автор: Alexeis 21.6.2008, 10:18
Цитата(sai_NT @  20.6.2008,  21:55 Найти цитируемый пост)
Внимание вопрос! Как можно остановиться перед моментом возникновения ошибки или хотя бы в ее момент возникновения, но чтобы была возможность просмотреть значения нужных мне переменных? Возможно есть вообще дргие методы (WinDBG etc.)

  Так он и так останавливается. Нужно по Call Stack перейти к нужному методу и посмотреть чего там твориться. Но это получится если установлены исходники INDY. Еще вариант, залезть на их оф. сайт и скачать последнею версию, может они сами уже устранили эту проблему.

Автор: sai_NT 21.6.2008, 11:33
Цитата

Выполнить до? Или ставить брейкпойнты... 


Те, кто возможно пограммировал в 1С, знают о галочке "Останавливаться по ошибке". То есть отладчик анализирует следюущие инструкции и если обнаруживает ошибку, то останавливается перед их вызовом, а не во время вызова, и, соответственно, есть возможность просмотреть значения переменных, участвующих в этом действии.

Цитата

прыгнеш на примерную строку где могла произойти ошибка, посмотри код выше этой строки, расставь там бряки =)


В том то и дело, что возможности/терпения расставить бряки нет, так как 100 раз может код выполниться без ошибки, а на 101 с ней уже.

Цитата

поставь себе какой-нибудь модуль отслеживания утечек памяти (типа MemCheck)


А это гляну, что за зверь. Может пригодится в будущем.

Цитата

Нужно по Call Stack перейти к нужному методу и посмотреть чего там твориться. Но это получится если установлены исходники INDY. Еще вариант, залезть на их оф. сайт и скачать последнею версию, может они сами уже устранили эту проблему.


Переходил, смотрел, попытки ставил - все равно, что-то упускаю. Наверно таки перейду на Indy 10 (воследний релиз качну).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)