Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 баг компилятора?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
Linux
Картинка с другого сайта.

упорно заходит в TPSPascalCompilerMessage(FMessages[l]).Free, при том, что FMessages.Count = 0 с гарантией, дебаггер подтверждает.
смотрю асм код.

uPSCompiler.pas.2642: for l := 0 to FMessages.Count - 1 do
000000000101694C 488B45E8 mov rax,QWORD PTR [rbp-0x18]
0000000001016950 483945F0 cmp QWORD PTR [rbp-0x10],rax
0000000001016954 75CD jne 0x1016923 <Upscompiler.TPSPascalCompiler.Clear()+115>

cmp QWORD PTR [rbp-0x10],rax ставит флаг ZF 0, и прыгает соответственно.
По адресу rbp-0x10 ноль.

Раньше такого не было, а сейчас вдруг всплыло.

Что делать, куда копать? Смутно припоминаю, что много лет назад что-то было похожее на винде, но где именно и как исправлял - не помню.

Сообщение было отредактировано: 14 ноя 20, 12:13
14 ноя 20, 12:16    [22231979]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
вопрос снят,
var l: Longint;
vs
property Count: Cardinal read FCount;

Longint в Posix64 имеет 8 байт.

Продолжение знакомых старых историй, непонятно только почему раньше было нормально, а сейчас всплыло. Но неважно, суть ясна, исправлю.
14 ноя 20, 12:18    [22231980]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
alekcvp
Member

Откуда:
Сообщений: 2494
Это скорее баг отладчика.

У меня буквально на днях была ситуация, когда в коде:

  ...
  case Key of
    VK_RETURN:
      ...
    VK_ESCAPE:
{1}   PostQuitMessage(1);
  else
{2} Exit;
  end;
{3} Key := 0;


Отладчик при нажатии F8 последовательно проходил по строчкам {1}, {2} и {3}!
При этом код работал правильно, т.е. отладчик показывал выполнение инструкций, которые на самом деле не выполнялись. Хз что это было.

Сообщение было отредактировано: 14 ноя 20, 14:36
14 ноя 20, 14:40    [22232049]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51775

alekcvp
отладчик показывал выполнение инструкций, которые на самом деле не выполнялись.

Вообще-то должен был бы проходить через 1-3-2...
PostQuitMessage не прерывает выполнение, так что присваивание обязано выполниться. Выход
из процедуры может осуществляться по желанию компилятора через любую удобную ему точку.

И вообще при современном неестественном интеллекте оптимизатора привязка строк исходника к
исполняемом коду весьма нетривиальна (если вообще возможна).

Posted via ActualForum NNTP Server 1.5

14 ноя 20, 14:51    [22232055]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
alekcvp
Member

Откуда:
Сообщений: 2494
Dimitry Sibiryakov

Вообще-то должен был бы проходить через 1-3-2...

Через 2 он не должен был вообще проходить. Не важно что там в ассемблере, в коде порядок действий определён однозначно.
Но факт что он проходил именно 1 - 2 - 3, т.е. Exit() не выполнялся.
14 ноя 20, 16:19    [22232083]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
P.S. Отладчик в линухах работает ОЧЕНЬ странно.

Сообщение было отредактировано: 15 ноя 20, 10:22
15 ноя 20, 10:21    [22232278]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
Проблема в том что, кто - то любит втыкать в редактор очень много директив препроцессоров, из за которых дебаггер неправильно прыгает по коду.
15 ноя 20, 22:00    [22232504]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
northener
Member

Откуда: Москва
Сообщений: 88
loktevVasiliy
Проблема в том что, кто - то любит втыкать в редактор очень много директив препроцессоров, из за которых дебаггер неправильно прыгает по коду.

Вот отсюда пожалуйста подробнее.
16 ноя 20, 03:12    [22232569]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
Отладчик неправильно прыгает по коду лишь в одном случае: если у pas файла неправильная кодировка и неправильные символы переноса строки.
Например, для винды - это 2 символа #13#10, а бывает так, что только один символ #13 и тогда нужно pas-файл преобразовать, например с помощью Notepad++

К сообщению приложен файл. Размер - 11Kb


Сообщение было отредактировано: 16 ноя 20, 09:52
16 ноя 20, 09:56    [22232627]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
alekcvp
Member

Откуда:
Сообщений: 2494
X11
Отладчик неправильно прыгает по коду лишь в одном случае: если у pas файла неправильная кодировка и неправильные символы переноса строки.
Например, для винды - это 2 символа #13#10, а бывает так, что только один символ #13 и тогда нужно pas-файл преобразовать, например с помощью Notepad++

Нет, из-за этого точки отладки смещаются, а там он прыгал по строкам кода правильно, просто не по тем.
16 ноя 20, 10:43    [22232673]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
northener
Вот отсюда пожалуйста подробнее.


Тут и так все понятно, что имелось введу. Есть такие люди, которые любят в 1 файл сунуть кода на 20 тысяч строк.

К сообщению приложен файл. Размер - 10Kb
16 ноя 20, 11:33    [22232713]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
loktevVasiliy
northener
Вот отсюда пожалуйста подробнее.


Тут и так все понятно, что имелось введу. Есть такие люди, которые любят в 1 файл сунуть кода на 20 тысяч строк.


давай, расскажи нам, что файл на 20к строк вызывает баги компилятора, это очень интересно.

*тут должна быть картинка слушающего чувака с сигаретой, но мне лень ее искать*
16 ноя 20, 11:35    [22232715]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
loktevVasiliy
Проблема в том что, кто - то любит втыкать в редактор очень много директив препроцессоров, из за которых дебаггер неправильно прыгает по коду.


Vizit0r
давай, расскажи нам, что файл на 20к строк вызывает баги компилятора, это очень интересно.



Картинка с другого сайта.

Это просто констатация факта, что плохая структура файла - несёт в себе агонию и вред. Используйте .inc файлы, и правильную структуру документа.

И тогда сам по себе, никогда отладчик не будет не правильно прыгать по коду.

+
И нет, это именно из за того что директивы препроцессора всё портят


К сообщению приложен файл. Размер - 9Kb
16 ноя 20, 11:45    [22232726]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 855
loktevVasiliy
Это просто констатация факта, что плохая структура файла - несёт в себе агонию и вред. Используйте .inc файлы, и правильную структуру документа.



Т.е. пруфов и сторей не будет, будет классическое "ДА ЭТО ВСЕ ЗНАЮТ!" + "это же очевидно!"

Ясно-понятно.

Сообщение было отредактировано: 16 ноя 20, 12:18
16 ноя 20, 12:22    [22232771]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
loktevVasiliy
Member

Откуда:
Сообщений: 11
Vizit0r,

Это индивидуально происходит. Но происходит это в частности из за ctrl + d
16 ноя 20, 13:17    [22232848]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Док
Member

Откуда: Казань
Сообщений: 6900
Dimitry Sibiryakov
Вообще-то должен был бы проходить через 1-3-2...

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

Сообщение было отредактировано: 16 ноя 20, 13:13
16 ноя 20, 13:17    [22232849]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 459
Ну да, учитывая, что с inc файлами отладчик умеет работать чуть менее чем никак, отличный совет)) да и в принципе концепция эта неудобна. Попробуй в том же лазаре выйти на реализацию конкретной функции - всё проклянешь
17 ноя 20, 00:48    [22233421]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Док
Member

Откуда: Казань
Сообщений: 6900
Fr0sT-Brutal
Попробуй в том же лазаре выйти на реализацию конкретной функции - всё проклянешь

поясни
17 ноя 20, 01:44    [22233437]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1350
Идите спать, черти.
17 ноя 20, 01:48    [22233438]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 459
Док
Fr0sT-Brutal
Попробуй в том же лазаре выйти на реализацию конкретной функции - всё проклянешь

поясни

Понадобилось как-то поглядеть на реализацию ОС-зависимой функции. После 10-минутного барахтания в файлах из среды пришлось запускать поиск текста.
17 ноя 20, 14:19    [22233747]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
Fr0sT-Brutal
Док
пропущено...

поясни

Понадобилось как-то поглядеть на реализацию ОС-зависимой функции. После 10-минутного барахтания в файлах из среды пришлось запускать поиск текста.

Я в такое уперся, когда ОС-функции "на лету" прикручиваются, а на момент написания кода там только ссылка куда-то. В остальном лазарь отлично справляется. Но это вопрос не к лазарю, а к тем, кто проектирует платформозависимый код.
17 ноя 20, 14:46    [22233802]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4724
wadman
Но это вопрос не к лазарю, а к тем, кто проектирует платформозависимый код.

Зато гибкость офигенная :)
17 ноя 20, 15:03    [22233828]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Док
Member

Откуда: Казань
Сообщений: 6900
Fr0sT-Brutal
После 10-минутного барахтания в файлах из среды пришлось запускать поиск текста.

мне кажется, там просто внимательно надо посмотреть настройки

К сообщению приложен файл. Размер - 19Kb
17 ноя 20, 15:05    [22233833]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
Kazantsev Alexey
wadman
Но это вопрос не к лазарю, а к тем, кто проектирует платформозависимый код.

Зато гибкость офигенная :)

Но такое и в дельфи можно запилить. И в нем тоже можно потеряться.
Где-же и в какое время в рекорд с функциями/процедурами появляются ссылки на реальный код?

Например, как с менеджером памяти.
17 ноя 20, 15:14    [22233846]     Ответить | Цитировать Сообщить модератору
 Re: баг компилятора?  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4724
wadman
Но такое и в дельфи можно запилить.

Теоретически-то можно всё. На практике, в фпц я могу поменять менеджер ресурсов, а в дельфях, максимум, кастомизировать загрузку ресурсной строки.
17 ноя 20, 15:26    [22233865]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить