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

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

Debug & properties evaluation [D5, NT4]


oomneeq ©   (2002-01-18 18:57:00) 

А по русски - дебугер может отображть значение пропертей
(в Watch,Evaluate и мышкой при наведении в исходнике)
Насколько корректно он себя ведет в случае когда получения значения проперти сопряжено с созданием объекта.
Создает?!
Если да, то это может оказываться совсем не кстати.

type YYY=class
....
function YYY.GetXXX:TComponent;
begin
if not Assigned (FXXX)
then FXXX:=TComponent.Create(...);
end;
.....
property XXX: TComponent; read GetXXX;
...
end;

Я вот так и не осознал, но сдается мне, с этим у него нечисто..
У меня один такой FXXX был не нилом (причем непросто не нилом, а очень похоже,что корректно созданым (Debugger"ом, как я теперь подозреваю, т.к. XXX вероятно торчала в окне Watch где то выше от FXXX)) уже в на begin"e YYY.Create.
Я так неуверенно, потому что ситуацию уже не воспроизводил, а по памяти излагаю. А мысль пришла с запозданием :-)

Какие наблюдения и/или опыт у вас?


oomneeq   (2002-01-28 18:56:00) [1]

>"возможность вычисления значения пропертей на дебуге"
>устанавливается в Tools\Debugger options\General\Allow function
>calls in new watches

Похоже на то, но однако же не оно.
Во всяком случае у меня эта птица не включена, а все вышеописанное происходит.
Думаю, что эта установка влияет на
повторныйвызов функции, т.е. для каждого нового занесения исследуемого значения в Watch.


vedmed   (2002-01-21 09:06:00) [2]

"возможность вычисления значения пропертей на дебуге" устанавливается в Tools\Debugger options\General\Allow function calls in new watches


oomneeq   (2002-01-20 21:58:00) [3]

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


paul_shmakov   (2002-01-20 02:24:00) [4]

Я бы сделал эту возможность опциональной.
а эта возможность и так опциональна :)
Editor Options\Code Insight\Tooltip Expresion Evalution

Нехорошо это - не должон бы отладчик влиять на данные без ведома
отлаживающего.

а как же ему иначе работать? за удобство приходится платить повышенным вниманием


oomneeq   (2002-01-19 08:30:00) [5]

Дела интересные конечно.
Только что не поленился, проверил по простому - в GetXXX
cчетчик наращивать.
Пускаю дебагер,
навожу мышкой на XXX раз - в счетчике - единичка
убираю,навожу мышкой два - двойка
Заношу в Watch - уже тройка.
Нехорошо это - не должон бы отладчик влиять на данные без ведома
отлаживающего.
Я бы сделал эту возможность опциональной.
Так что парни, поосторожнее с отладкой пропертей!


paul_shmakov   (2002-01-19 04:05:00) [6]

абсолютно все верно. дебагер вызовет функцию GetXXX для получения значения свойства, а уж что GetXXX сделает для возврата значения - это ее дело. пусть хоть с банком через интернет соединяется и состояние счета получает :) все честно.


Наверх

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