создать простой пример ошибки задания и ошибки хранения - PullRequest
0 голосов
/ 26 марта 2019

Мне нужен простой код Ada для проверки моей "системы". Чтобы проверить это, мне нужен пример кода, который вызывает ошибку хранилища и ошибку задания (обычно я знаю, что их избегают, но мне нужно смоделировать эту проблему). Я знаю, что это основной запрос, но я немного новичок в кодировании ада, и мне немного трудно решить эти задачи. Я пытался найти в Интернете подходящее решение, но все они не пригодны для моих нужд (или слишком конкретны, или неправильны). Что я ищу, так это создаю .adb с функцией / процедурой, которая вызывает эти две ошибки.

1 Ответ

2 голосов
/ 26 марта 2019

Надеюсь, вы будете довольны различными процедурами для двух ошибок?

Для Storage_Error,

procedure Storage is
   procedure Recursive is
   begin
      Recursive;
   end Recursive;
begin
   Recursive;
end Storage;

и для Tasking_Error,

procedure Tasking is
   task T is
      entry E;
   end T;
   task body T is
   begin
      null;
   end;
begin
   delay 0.01;
   T.E;
end Tasking;

Это вызывает исключение, потому что, когда основная программа вызывает T.E, там вообще нет задачи.Чтобы изучить это, замените null;, например, delay 5.0; - программа ждет 5 секунд, прежде чем исключение прекратит его.

...