Delphi - как повторно включить уведомление об исключении отладчика?

Я открыл проект (созданный в D2007 / 08) в D2009, и он компилировался, но при выполнении генерировал массу исключений. Странно, но я знаю, что в проекте полный беспорядок, поэтому я хочу пойти дальше и исправить это. Что ж, не совсем все это исправлять, достаточно просто заставить его работать.

Когда я запустил его, я получил уведомление об исключении отладчика (небольшой диалог с сообщениями с кнопками Break, Continue, Help), и я хотел продолжить и посмотреть, будет ли работать, если пропустить исключение. Я установил флажок «Игнорировать этот тип исключения» в нижнем левом углу и щелкнул «Продолжить». Теперь я больше не получаю уведомление об исключении, но приложение по-прежнему не запускается. Я просто получаю пару неопределенных ящиков с ошибками и очень плохо понимаю, что происходит.

Я хотел бы снова включить тип исключения, который я ранее выбрал для игнорирования. Но нигде не могу найти вариант. Где мне это искать? Кто-нибудь может помочь?


person Peter Perháč    schedule 03.05.2009    source источник
comment
спасибо за этот вопрос (и ответы на него). Наконец, мой отладчик работает как задумано   -  person sum1stolemyname    schedule 12.11.2010


Ответы (2)


Следующее извлечено из этой страницы в Delphi Q&A Роба Кеннеди: ( С лицензией CC), хотя это относится к Delphi 2005, это может помочь.

Почему я продолжаю получать сообщения об ошибках даже после того, как написал обработчик исключений?

В настройках по умолчанию Delphi IDE уведомляет вас всякий раз, когда в вашей программе возникает исключение, как показано на рисунке 1. Важно понимать, что в этот момент ни один из кодов обработки исключений вашей программы еще не запущен. Это все сама Delphi; его особый статус отладчика позволяет ему получать первое уведомление о любом исключении в вашей программе, даже до того, как ваша программа узнает об этом.

введите описание изображения здесь

Как избежать уведомления

Если вы не хотите получать уведомления при возникновении исключения, у вас есть несколько вариантов.

  • Вы можете использовать «расширенные точки останова» Delphi, чтобы отключить обработку исключений в определенной области кода. Для начала установите точку останова в строке кода, где вы хотите, чтобы среда IDE игнорировала исключения. Щелкните правой кнопкой мыши точку точки останова в желобе и откройте диалоговое окно свойств точки останова. В расширенном разделе есть несколько флажков. (См. Рис. 2.) Снимите флажок «Прервать», чтобы отладчик не прервал вашу программу на этой строке, и установите флажок «Игнорировать последующие исключения».

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

введите описание изображения здесь

  • Вы можете указать отладчику игнорировать определенные виды исключений. На рисунке 3 показаны параметры исключения языка Delphi. Добавьте класс исключения в список, и все исключения этого типа и любых типов-потомков будут передаваться в вашу программу без вмешательства Delphi.

введите описание изображения здесь

  • В параметре, связанном с предыдущим, вы можете указать отладчику не прерывать выполнение каких-либо исключений. Для этого снимите флажок «Уведомлять о языковых исключениях».

  • Наконец, вы можете полностью отключить встроенную отладку. Delphi не будет уведомлять вас об исключениях, а также не будет останавливаться на точках останова или разрешать использование кнопки «Пауза». Отключите встроенную отладку в параметрах отладчика, как показано на рисунке 5 для Delphi 2005.

введите описание изображения здесь

person stuartd    schedule 03.05.2009
comment
Я взглянул на него, и хотя он вселил некоторую надежду, версия 2009 года немного изменилась, и вариантов больше нет (как показано на снимках 2005 года). - person Peter Perháč; 03.05.2009
comment
Я смотрел в другое окно настроек, упс. Спасибо, что указали мне на статью. - person Peter Perháč; 03.05.2009
comment
Помогло найти в Delphi 10.1. 6 лет, все еще в силе. Спасибо. - person Frédéric Hebrard; 01.02.2017
comment
Ни один из этих вариантов не достигает того, чего я хочу. - person Paul; 30.08.2017

Я нашел игнорируемые типы исключений в

(Main menu) Tools >> Options >> Debugger Options >> CodeGear Debuggers >> Language Exceptions >> и есть список игнорируемых типов исключений.

Это несколько более скрыто, чем в D2005, но очень близко к тому, что было сказано в статье, на которую ссылается Стюарт Данкельд.

person Peter Perháč    schedule 03.05.2009
comment
Основываясь на приведенной вами последовательности, единственное отличие состоит в том, что отладчики Borland превратились в отладчики Codegear. - person Rob Kennedy; 03.05.2009
comment
Ну да. Дело в том, что сначала я искал его не на том экране настроек. Я думал, что это параметры Ctrl + Shift + F11, которые зависят от конкретного проекта, и это было на экране «Инструменты» ›› Параметры. Я очень мало занимался разработкой Delphi за последние три года или около того, и я привык к Eclipse и к тому, как вы можете отфильтровать варианты. Теперь у нас есть вопросы и ответы на SO, и это то, о чем на самом деле весь этот сайт. Я надеюсь, что в будущем это поможет некоторым людям с этой проблемой. - person Peter Perháč; 04.05.2009