Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.09.17;
Скачать: CL | DM;

Вниз

Странное поведение отладчика   Найти похожие ветки 

 
dmk ©   (2016-06-09 01:39) [0]

Когда отлаживаешь цикл и точку останова ставишь на for i := 0 to X do,
то i почему то равно единице. Это глюк или настраивается? Как-будто отладчик пропускает нулевую позицию. Если ставить внутри begin end, то все нормально. Или это просто особенности/странности к которым нужно привыкнуть?


 
Германн ©   (2016-06-09 01:55) [1]

Это и не глюк и не настраивается до сих пор. Судя по твоему вопросу. Отладчик испокон веков не умел грамотно показывать значение переменной цикла.


 
Германн ©   (2016-06-09 02:08) [2]

Хотя если выключить оптимизацию, то вроде проблем с отладчиком быть не должно.


 
Юрий Зотов ©   (2016-06-09 04:47) [3]

> Когда отлаживаешь цикл и точку останова ставишь на
>  for i  := 0 to X do
> то i почему то равно единице


Попробую угадать: при этом оптимизация включена и Х = 1 ?


 
KSergey ©   (2016-06-09 09:23) [4]

А я бы так стелепатировал:

> точку останова ставишь на for i := 0 to X do, то i почему то равно единице.
> Если ставить внутри begin end, то все нормально.


Может всё дело в том, что на момент остановки на строке for i := 0 to X do собственно цикл еще не начал выполняться и переменная i не инициализирована начальным значением цикла (содержит мусор)?


 
sniknik ©   (2016-06-09 10:30) [5]

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


 
sniknik ©   (2016-06-09 10:31) [6]

> более оптимальны циклы
вернее там не сам цикл, а проверка выхода из него


 
KSergey ©   (2016-06-09 10:42) [7]

И всё же: разве в момент остановки на строке
for i := 0 to X do
переменная i уже инициализирована начальным значением цикла?


 
ttUser ©   (2016-06-09 12:11) [8]

ну это в Delphi 7 глюк был, что показывался "истинный" счетчик ссылок, который бегает при оптимизированном коде сверху вниз.
Потом это поправили, но оставили глюк типа:

MyList[i].MyProperty

Когда MyProperty показывался от опять же истинного счетчика.

В XE вроде всё это поправлено.


 
dmk ©   (2016-06-09 14:12) [9]

>Юрий Зотов ©   (09.06.16 04:47) [3]
Оптимизация выключена.

>KSergey ©   (09.06.16 09:23) [4]
Без понятия, потому и спрашиваю.

Не важно от какого числа идет цикл. Компилятор единицу прибавляет. Т.е. он первый проход «съедает».

Вот 2 разных варианта:
http://hostingkartinok.com/show-image.php?id=da9bf12ea624c2e4c6ae6d275ed5b919

Если внутри begin..end BP поставить, то все нормально.

Delphi XE6 prof.


 
dmk ©   (2016-06-09 14:18) [10]

Не то чтобы сильно напрягает, но все же — зачем и почему ??? :)
Просто с толку сбивает.

Кстати во FreePascal также сделано:
http://hostingkartinok.com/show-image.php?id=b76f1f9f62367e7bd733c6e9b0210f1b

Видимо я что-то не понимаю или это с оптимизацией кода связано.
В общем я в растерянности :)


 
KSergey ©   (2016-06-09 15:33) [11]

> dmk ©   (09.06.16 14:12) [9]
> Не важно от какого числа идет цикл. Компилятор единицу прибавляет.
>  Т.е. он первый проход «съедает».


Как это пропускает? ты же пишешь, что

> Если ставить внутри begin end, то все нормально.

т.е. по факту i принимает нужное значение. Или в вычислениях тоже пропуск?


 
dmk ©   (2016-06-09 15:39) [12]

>ты же пишешь, что
Также пишу: когда точку останова ставишь на for i := 0 to X do

С вычислениями порядок. Внутри блока отлавливает.


 
Inovet ©   (2016-06-09 15:48) [13]

На этой строке присваивания i ещё не дожно быть было. И смотри про оптимизацию выше.

Так что - F8 нажимаешь и всё равно не то значение?


 
NoUser ©   (2016-06-09 16:04) [14]

XE-8, DX-S, DX-B  http://hkar.ru/J4lW
FPC3.0-Lazarus 1.6  http://hkar.ru/J4lX


 
dmk ©   (2016-06-09 16:14) [15]

>Так что - F8 нажимаешь и всё равно не то значение?

На строчке for - не то. Внутри блока правильное.


 
Inovet ©   (2016-06-09 18:52) [16]

> [15] dmk ©   (09.06.16 16:14)
> На строчке for - не то. Внутри блока правильное.

Ну, тогда и проблемы нет.



Страницы: 1 вся ветка

Текущий архив: 2017.09.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.005 c
11-1264530745
andreil
2010-01-26 21:32
2017.09.17
TChart в KOLе?


15-1465425551
dmk
2016-06-09 01:39
2017.09.17
Странное поведение отладчика


2-1423464515
Петров В.
2015-02-09 09:48
2017.09.17
Проверка даты


2-1445275556
Дмитрий
2015-10-19 20:25
2017.09.17
работоспособность составного запроса, mySQL