Отслеживание выполнения программы на Аде

Поддерживает ли Ada/GNAT что-то вроде автоматической трассировки выполнения программы (или выбранных пакетов/процедур/функций) для целей отладки? Меня не интересует пакет регистратора.

Представьте себе, что вы работаете над настоящим старым проектом на Аде, и использование отладчика для пошагового выполнения кода — не вариант. На мой взгляд, добавление текстовых выводов часто помогает понять код:

if A and B or C then
   Ada.Text_IO.Put_Line ("1");

   [...]
else
   Ada.Text_IO.Put_Line ("2");

   [...]
end if;

Но добавление таких текстовых выходов — это ручной процесс, и на это требуется время для сложного кода.


person Marcello90    schedule 09.10.2019    source источник


Ответы (1)


Вы можете взглянуть на rr. Я никогда не использовал его сам, но он вполне может сработать с Адой.

person DeeDee    schedule 09.10.2019
comment
Это действительно работает. Крутой инструмент! Какой-нибудь хороший интерфейс gdb для использования? - person Álex; 10.10.2019
comment
@Алекс: Хорошо! Не могу помочь вам с внешним интерфейсом, но некоторые люди, похоже, используют свою IDE (см. rr вики). Возможно, вы могли бы использовать gdb интерфейс GPS. - person DeeDee; 10.10.2019
comment
@Alex: Вы можете попробовать подключиться к интерфейсу gdbserver, представленному rr replay, из консоли отладчика GPS IDE (см. также GNAT UG). - person DeeDee; 10.10.2019
comment
Спасибо, @DeeDee, попробую. - person Álex; 11.10.2019
comment
Ограничен ли rr операционной системой на базе Linux? Альтернативы для Windows? - person Marcello90; 27.10.2019
comment
@ Marcello90: Похоже, что rr — это только Linux, и на момент написания статьи жизнеспособной альтернативы Windows не существовало. Microsoft создала эквивалентную функциональность для Windows с именем Отладка путешествия во времени (которая является частью предварительного просмотра WinDbg), но я боюсь, что WinDbg нельзя использовать в этом случае. WinDbg требует другого (собственного) формата файла для символов отладки (PDB), который не поддерживается. по ГЦК. - person DeeDee; 27.10.2019