You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
При использовании пошагового отладчика возникает проблема, что некоторые точки остановки не срабатывают. Это вызвано неожиданным изменением указателей на открывающие скобки активации, которые сохраняются для запоминания точек остановки.
Под неожиданным изменением подразумевается, что выполнение текущего шага Рефал-машиной не должно изменять часть поля зрения, находящуюся за пределами первичного активного подвыражения. Но каким-то образом в процессе вычисления условий это происходит, и меняются указатели на скобки активации. Структура поля зрения сохраняется правильной, меняется только расположение в памяти.
Способ повторения следующий:
Добавить печати указателей на открывающие скобки активации, модифицировав файлы отладчика:
Изменить функцию backtrace_option, печатающую стек скобок активации, в src/lib/debug/refalrts-debugger.cpp:1083:
При использовании пошагового отладчика возникает проблема, что некоторые точки остановки не срабатывают. Это вызвано неожиданным изменением указателей на открывающие скобки активации, которые сохраняются для запоминания точек остановки.
Под неожиданным изменением подразумевается, что выполнение текущего шага Рефал-машиной не должно изменять часть поля зрения, находящуюся за пределами первичного активного подвыражения. Но каким-то образом в процессе вычисления условий это происходит, и меняются указатели на скобки активации. Структура поля зрения сохраняется правильной, меняется только расположение в памяти.
Способ повторения следующий:
Изменить функцию
backtrace_option
, печатающую стек скобок активации, вsrc/lib/debug/refalrts-debugger.cpp:1083
:Изменить функцию
handle_function_call
, обрабатывающую шаг исполнения, вsrc/lib/debug/refalrts-debugger.cpp:1384
:@refal-5-lambda-diagnostics.ini
, содержащий стокуenable-debugger = true
.В результате точка остановки
^2
будет пропущена.Выполнив программу по шагам можно увидеть следующую картину:
Как видно, указатель на открывающую скобку активации функции
B?1
(тоже самое, чтоB
позже) изменился.The text was updated successfully, but these errors were encountered: