Pytanie Delphi - Jak ponownie włączyć powiadomienie o wyjątku debuggera?


Otworzyłem projekt (utworzony w D2007 / 08) w D2009, który skompilował, ale wyrzucił tony wyjątków po wykonaniu. Dziwna rzecz, ale wiem, że projekt to bałagan, więc chcę go naprawić i naprawić. Cóż, nie naprawię tego wszystkiego, wystarczy, że to wystarczy.

Kiedy go uruchomiłem, otrzymałem powiadomienie o wyjątku debugowania (małe okno dialogowe z przyciskami Przerwa, Kontynuuj, Pomoc) i chciałem kontynuować i zobaczyć, czy może działać, gdy pominięto wyjątek. Sprawdziłem małe pole "Ignoruj ​​ten wyjątek" w lewym dolnym rogu i kliknąłem Kontynuuj. Teraz nie otrzymuję już powiadomienia o wyjątku, ale aplikacja nadal nie działa. Dostaję tylko kilka nieokreślonych pól błędów i nie mam pojęcia, co się dzieje.

Chciałbym ponownie włączyć wyjątek typu I wcześniej wybrany do zignorowania. Ale nigdzie nie mogę znaleźć tej opcji. Gdzie powinienem to szukać? Czy ktoś może pomóc?


14
2018-05-03 18:17


pochodzenie


dzięki za to pytanie (i odpowiedzi na to). Wreszcie mój debugger działa zgodnie z przeznaczeniem - sum1stolemyname


Odpowiedzi:


Poniższy fragment jest pobierany z tę stronę na temat Q & A Delphi autorstwa Rob Kennedy'ego: (Na licencji CC), chociaż dotyczy Delphi 2005, może pomóc.

Dlaczego nadal otrzymuję komunikaty o błędach, nawet po napisaniu obsługi wyjątku?

W domyślnych ustawieniach IDE Delphi powiadamia użytkownika za każdym razem, gdy wystąpi wyjątek w twoim programie, jak na rysunku 1. Ważne, aby zdać sobie sprawę, że w tym momencie żaden z kodów obsługi wyjątków programu nie został jeszcze uruchomiony. To wszystko samo Delphi; jego specjalny status jako debuggera pozwala mu uzyskać pierwsze powiadomienie o każdym wyjątku w twoim programie, nawet zanim twój program o tym wie.

enter image description here

Unikanie powiadomienia

Jeśli nie chcesz otrzymywać powiadomień o wystąpieniu wyjątku, masz kilka opcji.

  • Możesz użyć "zaawansowanych pułapów" Delphi, aby wyłączyć obsługę wyjątków w regionie kodu. Aby rozpocząć, ustaw punkt przerwania w wierszu kodu, w którym IDE ma ignorować wyjątki. Kliknij prawym przyciskiem myszy kropkę punktu przerwania w rynnie i otwórz okno dialogowe właściwości punktu przerwania. W sekcji zaawansowanej są niektóre pola wyboru. (Zobacz rysunek 2.) Wyczyść pole "Break", aby uniemożliwić debuggerowi przerwanie programu w tym wierszu i ustaw opcję "Ignoruj ​​kolejne wyjątki".

    Następnie ustaw inny punkt przerwania, w którym chcesz, aby debugger wznowił obsługę wyjątków. Zmień jego właściwości, aby obsługiwać kolejne wyjątki.

enter image description here

  • Możesz powiedzieć debuggerowi, aby ignorował pewne rodzaje wyjątków. Rysunek 3 pokazuje opcje wyjątków językowych Delphi. Dodaj klasę wyjątków do listy, a wszystkie wyjątki tego typu i typy potomków przejdą do twojego programu bez ingerencji Delphi.

enter image description here

  • W opcji związanej z poprzednią, możesz powiedzieć debuggerowi, aby nie przerywał żadnych wyjątków. Aby to zrobić, wyczyść pole wyboru "Powiadom wyjątki języka".

  • Na koniec możesz całkowicie wyłączyć zintegrowane debugowanie. Delphi nie powiadomi Cię o wyjątkach, a także nie zatrzyma się w punktach przerwania ani nie zezwoli na użycie przycisku "Wstrzymaj". Wyłącz zintegrowane debugowanie w opcjach debuggera, jak pokazano na Rysunku 5 dla Delphi 2005.

enter image description here


7
2018-05-03 18:33



Spojrzałem na to i choć dawało to trochę nadziei, wersja 2009 zmieniła się całkiem sporo, a opcji już tam nie ma (jak pokazano na migawkach z 2005 roku). - Peter Perháč
Patrzyłem na inne okno opcji, oops. Dzięki za wskazanie mi artykułu. - Peter Perháč
Pomógł mi znaleźć go w Delphi 10.1. 6 lat, nadal ważne. Dzięki. - Frédéric Hebrard
Żaden z tych wariantów nie osiąga tego, czego chcę. - Paul


Znalazłem typy ignorowanych wyjątków w

(Main menu) Tools >> Options >> Debugger Options >> CodeGear Debuggers >> Language Exceptions >> i jest ignorowana lista typów wyjątków.

Jest nieco bardziej ukryty niż w D2005, ale bardzo blisko tego, co zostało powiedziane w artykule, do którego odnosi się Stuart Dunkeld.


17
2018-05-03 18:49



Opierając się na sekwencji, którą tu przytoczyłeś, jedyną różnicą jest to, że "Debugery Borlanda" stały się "Debuggerami Codegear". - Rob Kennedy
No tak. Chodzi o to, że najpierw szukałem tego na niewłaściwym ekranie Opcji. Pomyślałem, że jest w opcjach Ctrl + Shift + F11, że preferencja jest zależna od projektu, i to było na ekranie Narzędzia >> Opcje. W ciągu ostatnich trzech lat wykonałem bardzo niewiele prac rozwojowych w Delphi i przyzwyczaiłem się do Eclipse i mogę odfiltrować opcje. Teraz mamy Q & A tutaj na SO, i to jest to, o co naprawdę chodzi w tej witrynie. Mam nadzieję, że w przyszłości pomoże to niektórym osobom z tym problemem. - Peter Perháč