Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.09.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
15-1465425551
dmk
2016-06-09 01:39
2017.09.17
Странное поведение отладчика


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


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


11-1264530745
andreil
2010-01-26 21:32
2017.09.17
TChart в KOLе?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский