Проблема с «нежелательными» диалогами исключений в Delphi - PullRequest
2 голосов
/ 01 марта 2010

У меня проблема с диалогами исключений: я использую RemObjects SDK для приложения клиент / сервер. Когда возникает проблема с подключением, клиент начинает выдавать «простые» диалоги исключений, просто текст и кнопку. Когда я запускаю приложение на своем компьютере разработки, диалоги исключений не отображаются (как и ожидалось). Текст в диалоговом окне - это просто «Тайм-аут», «Отказ в соединении» и т. Д. Такие исключения возникают И обрабатываются внутри кода RemObjects внутри рабочего потока. Я также активировал EurekaLog, но это совсем не помогает.

Есть идеи, почему он работает на машине разработчика, а не на "ванильной" клиентской машине? Как я могу избавиться от всех всплывающих окон исключений?

Я подписан на

  • Delphi 2007
  • RemObjects SDK "Зима 2009"
  • EurekaLog 6.0.22

Ответы [ 4 ]

4 голосов
/ 01 марта 2010

Я бы сделал следующее:

  • скомпилируйте ваше приложение с отладочной информацией (файл .map) и скопируйте оба на клиент
  • запустите ваше приложение на клиентской машине "vanilla"
  • дождитесь появления всплывающего окна
  • запустить мой профилировщик выборки: http://asmprofiler.googlecode.com/files/AsmProfiler_Sampling%20v1.0.6.12.zip
  • используйте кнопку «Представление процесса в стеке» и выберите свое приложение в списке процессов
  • двойной щелчок или кнопка «Просмотр в реальном времени» http://code.google.com/p/asmprofiler/wiki/ProcessStackViewer
  • теперь вы можете просматривать стек основного потока, поэтому вы должны видеть, откуда появляется всплывающее окно ...

Удачи!

0 голосов
/ 03 марта 2010

У вас может быть установлена ​​среда IDE, чтобы игнорировать эти исключения. Вы можете проверить, посмотрев в опции отладчика. См. Меню Инструменты / Параметры, а затем посмотрите в Параметры отладчика / Языковые исключения.

Если это так, вы можете снять флажок, чтобы вернуть исключения на компьютер разработчика, а затем использовать try / кроме того, чтобы обработать исключения программно.

0 голосов
/ 02 марта 2010

Первым шагом будет использование удаленного отладчика и запуск или подключение к процессу на клиентском компьютере.

0 голосов
/ 01 марта 2010

Тебе придется отладить. Если он обрабатывается внутри рабочего потока, он не вызывает этот диалог. Нечто происходит, что приводит к тому, что объекты исключения выходят на более высокий уровень стека вызовов.

Попробуйте установить на свой собственный ванильный компьютер и попытаться воспроизвести его самостоятельно. Вы можете заметить некоторые детали, которые клиент не заметил или не удосужился сообщить вам. Как только вы сможете воспроизвести его, вы можете попытаться выяснить, что его вызывает, с помощью удаленной отладки или нескольких других способов.

...