Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отладка кода, как остановиться в отладке до ошибки 
:(
    Опции темы
sai_NT
  Дата 20.6.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 8.8.2007

Репутация: 1
Всего: 3



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

P.s.
Не хотелось бы брать все в конструкцию try...
PM MAIL   Вверх
Alkash
Дата 21.6.2008, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



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


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Exai1e
Дата 21.6.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 2
Всего: 30



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


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
ama_kid
Дата 21.6.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



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


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Alexeis
Дата 21.6.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



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

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
sai_NT
Дата 21.6.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 8.8.2007

Репутация: 1
Всего: 3



Цитата

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


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

Цитата

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


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

Цитата

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


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

Цитата

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


Переходил, смотрел, попытки ставил - все равно, что-то упускаю. Наверно таки перейду на Indy 10 (воследний релиз качну).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1846 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.