Предлагаю заменить сообщение в журнале
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;