OberonCore
https://forum.oberoncore.ru/

#026 Подробный вывод DevDebug.Unload
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6562
Страница 1 из 1

Автор:  adimetrius [ Суббота, 22 Февраль, 2020 20:58 ]
Заголовок сообщения:  #026 Подробный вывод DevDebug.Unload

Предлагаю заменить сообщение в журнале
unloading ModuleName failed
на
unloading ModuleName failed
ModuleName referenced by: ClientName1 ClientName2


Для этого в DevDebug добавить:

Код:
   PROCEDURE LogClients (m: Kernel.Module);
      VAR n: Kernel.Module; name: Kernel.Name; i, j, _: INTEGER;
   BEGIN
      IF m # NIL THEN
         n := Kernel.modList;
         WHILE n # NIL DO
            IF n.refcnt >= 0 THEN
               j := n.nofimps;
               i := 0; WHILE (i < j) & (n.imports[i] # m) DO INC(i) END;
               IF i < j THEN Kernel.Utf8ToString(n.name, name, _); StdLog.String(name); StdLog.Char(' ') END
            END;
            n := n.next
         END
      END
   END LogClients;

И в процедуру UnloadMod вставить то, что между (*!*)
Код:
   PROCEDURE UnloadMod (name: TextMappers.String; VAR ok: BOOLEAN);
      VAR mod: Kernel.Module; str: Dialog.String;
   BEGIN
      mod := Kernel.ThisLoadedMod(name);
      IF mod # NIL THEN
         IF name # "DevDebug" THEN
            Dialog.ShowParamStatus("#Dev:Unloading", name, "", "");
            Kernel.UnloadMod(mod)
         END;
         IF mod.refcnt < 0 THEN
            Dialog.MapParamString("#Dev:Unloaded", name, "", "", str);
            StdLog.String(str); StdLog.Ln
         ELSE
            Dialog.ShowParamMsg("#Dev:UnloadingFailed", name, "", "");
   (*!*)
            IF mod.refcnt > 0 THEN
               StdLog.ParamMsg("#Dev:^0 referenced by: ", name, '', ''); LogClients(mod); StdLog.Ln
            END;
   (*!*)
            ok := FALSE
         END
      ELSE
         Dialog.ShowParamMsg("#Dev:NotFound", name, "", "");
         ok := FALSE;
      END
   END UnloadMod;
   

Автор:  Евгений Темиргалеев [ Воскресенье, 23 Февраль, 2020 02:30 ]
Заголовок сообщения:  Re: Подробный вывод DevDebug.Unload

Хорошая идея. Я за повышение информативности.

Автор:  adimetrius [ Понедельник, 02 Март, 2020 15:35 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

Иван, что скажете?

Автор:  Иван Денисов [ Понедельник, 02 Март, 2020 15:53 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

adimetrius писал(а):
Иван, что скажете?

Я тоже за.

Автор:  adimetrius [ Понедельник, 02 Март, 2020 15:58 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

Вставляю?

Автор:  Иван Денисов [ Понедельник, 02 Март, 2020 17:57 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

adimetrius писал(а):
Вставляю?

Хорошо. Я думаю, что Александр не будет против. Некоторый кворум голосов есть.

Автор:  Борис Рюмшин [ Понедельник, 02 Март, 2020 23:29 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

По существу улучшение.

Автор:  Info21 [ Вторник, 03 Март, 2020 13:38 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

Улучшение полезное.

Автор:  Иван Денисов [ Среда, 22 Апрель, 2020 08:14 ]
Заголовок сообщения:  Re: #026 Подробный вывод DevDebug.Unload

Улучшение добавлено adimetrius в сборке 1.8-a1.26. В репозитории также обновил.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/