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

Поиск:

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Можно ли отвловить ошибку следующим образом. Допустим, я где-либо в среде программирования указываю, что в процессе работы программы мне нужно отследить изменение свойства Enabled у такой-то кнопки. Как это сделать??? Как сделать так, чтобы во время работы программы и при наступлении события (изменилось свойство Enabled у данной кнопки) выполнение программы прервалось и мне среда указала на строку, где это произошло???? Возможно ли это??? Мне просто нужно отладить довольно здоровую программу, а сам строчку не могу найти, которая мне нужна в коде. Спасибо за ответ.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
mr.Anderson
Дата 7.6.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



MacTep, можно отладить хоть 20000 строк, если знать, где искать. Сузьте поиск до какой-нибудь функции, в которой происходит ошибка.
Для отслеживания значений переменных используйте средство отладки Watch List.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
MacTep
Дата 7.6.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Вот и именно. Я знаю, как пользоваться и Watch List и всем таким. А в том-то и дело, что я не вижу, каким образом в моем коде может смениться именно свойство enabled. Возможно, что оно меняется при смене свойства другого компонента, например, панельки. Поэтому и спрашиваю... Есть ли возможность отследить конкретно, когда сменилось значение. То есть не по шагам отлаживать, а на лету. Сменилось значение - прога остановила выполнение....


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Insert
Дата 7.6.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хм, смена Enabled не генерирует события, так что найти его походу можно только Ctrl +F, F3.
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Rodman
Дата 7.6.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



ну а если написать
Код

if(Edit1.Enabled=False)then
  showmessage('Строка N');


и размножить этот текст в нужные места!!!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
skyboy
Дата 7.6.2007, 21:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Вариант 1
у каждой записи в списке WatchList можно вызвать свое контекстное меню. И в этом контекстном 
меню есть пункт "Break when changed". Но этот пункт доступен только во время работы программы(т.е. до запуска приложения он неактивен), т.к. неизвестен ещё адрес, по которому будет размещается переменная, изменение которой нужно отследить. 
Вариант 2
При работе со списком breakpoint'ов(вызывается по Ctrl + B) в контекстном меню есть пункт Add с подпунктами 
  • Source breakpoint
  • Address breakpoint
  • Data breakpoint
К слову, последние два пункта до запуска программы недоступны.
Установка Data breakpoint аналогична "Варианту 1". Только надо знать адрес.
А Address breakpoint - для того же, что и "обычные" break'и(Source breakpoint), с тем отличием, что эти breakpoint'ы никак не связаны с исходным кодом(в смысле, адресу может не соответствовать конкретная строка исходного кода).
PM MAIL   Вверх
MetalFan
Дата 7.6.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



так же можно поставить опцию Use Debug dcu и поставить бряку в классе кнопки на SetEnabled.... 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
sw04
Дата 9.6.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Rodman @ 8.6.2007,  00:16)
ну а если написать
Код

if(Edit1.Enabled=False)then
  showmessage('Строка N');


и размножить этот текст в нужные места!!!

Тогда лучше сделать глобальную переменную debug, например, булевую, чтоб при изменении его значения можно было показывать и не показывать информацию о дебаге(в нашем случае многочисленные showmessage).
на практике просто надо проверять не только состояние кнопки, но и значение debug.


--------------------
<удалено администрацией>
PM   Вверх
MacTep
Дата 10.6.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Спасибо! Попробую решить проблему. smile Очень полезные советы.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
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.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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