Может ли madExcept заморозить мое приложение Delphi?

У меня есть приложение на основе Delphi 5, использующее madExcept 3.0m. Судя по всему, он зависает из-за madExcept, продукта, качеством которого я восхищаюсь и поэтому обычно ни в чем не виню.

Вот код:

  AddLogEntry('ME_Settings');
  try
    AddLogEntry('ME_Settings2');
    with MESettings do begin                     // madExcept-Einstellungen
      AddLogEntry('FrozenMsg');
      sOldFrozenMsg := FrozenMsg;
      AddLogEntry('Meldung vorbereiten');
      FrozenMsg := AnsiString(_('Das Öffnen der Datenbank dauert ungewöhnlich lang.'));
      AddLogEntry('Remote?');
      [...]
    end;
  finally
    [...]
  end;

Он не выдает никаких исключений, он просто зависает при чтении FrozenMsg:
(источник: quodata.de)

Это не происходит ни на одном из моих компьютеров, но происходит на клиентском компьютере. Как MESettings madExcept могут вызывать такое поведение. Как мне отладить это?


person Gogowitsch    schedule 04.03.2013    source источник
comment
Вы спрашивали на ME форуме? Обычно Матиас очень отзывчив.   -  person David Heffernan    schedule 04.03.2013
comment
Когда ваша программа зависает, что она делает? Приостановите его в отладчике и узнайте.   -  person Rob Kennedy    schedule 04.03.2013
comment
@David: Спасибо, что отправили меня сюда: forum.madshi.net/viewtopic.php ?f=4&t=27497   -  person Gogowitsch    schedule 04.03.2013
comment
@Rob: К сожалению, я не могу выполнять удаленную отладку на клиентском компьютере и пока не могу воспроизвести проблему локально.   -  person Gogowitsch    schedule 04.03.2013
comment
Что это _('thing')?   -  person Warren P    schedule 05.03.2013
comment
@WarrenP: Действительно, кто-то придумал это название функции. Это сокращение для gettext(), широко распространенной системы перевода, основанной на файлах .po и .mo. Реализации существуют для многих языков.   -  person Gogowitsch    schedule 05.03.2013
comment
Мне очень нравится использование самого короткого и бессмысленного идентификатора Pascal, _   -  person David Heffernan    schedule 05.03.2013
comment
Итак, вы удалили MadExcept и отправили сборку заказчику, а заказчик НЕ зависает? :-)   -  person Warren P    schedule 05.03.2013
comment
@WarrenP: Спасибо за отзыв. Было бы довольно обременительно полностью удалить madExcept из проекта, потому что мы интенсивно используем многие его функции. С другой стороны, я попробовал исполняемый файл без проверки замораживания (отключен в настройках проекта - файл .mes) - такое же поведение. В настоящее время я думаю, что не madExcept, а что-то на компьютере клиента вызывает зависание.   -  person Gogowitsch    schedule 06.03.2013
comment
Под интенсивным использованием вы подразумеваете, что неоднократно вызываете MadExcept в сотнях мест вашего кода? Так что издевайтесь над этим. Создавайте псевдонимы юнитов и имитируйте юниты. Я уверен, что мог бы сделать это за считанные минуты, если не быстрее, с помощью #ifdefs.   -  person Warren P    schedule 06.03.2013


Ответы (1)


Теперь мы развернули обычное обновление, используя обычный (и тот же самый) madExcept 3.0m для клиента. Это сработало. Они заменили компьютер из-за других проблем, поэтому я совершенно уверен, что проблема была с конкретным компьютером, и ничего не нужно исправлять ни в madExcept, ни в наших продуктах.

person Gogowitsch    schedule 21.06.2013