AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Indy Exceptions in der IDE bewusst abschalten
Thema durchsuchen
Ansicht
Themen-Optionen

Indy Exceptions in der IDE bewusst abschalten

Ein Thema von AJ_Oldendorf · begonnen am 27. Jun 2017 · letzter Beitrag vom 27. Jun 2017
Antwort Antwort
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#1

Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 10:50
Hallo,
ich habe folgendes Problem in meiner Anwendung.
Ich benutze die Indy Komponenten zur Kommunikation über TCPIP mit einem Gerät A.
Jetzt möchte ich in meinem Projekt aber ein anderen Abschnitt debuggen welcher relativ rechenlastig/threadlastig ist.
Gerät A ist zur Zeit nicht mit meinem Rechner vorhanden und somit nicht erreichbar. Dies ist mir auch bewusst und interessiert mich auch nicht beim Debuggen, da ich gerade was ganz anderes teste.
Durch Contextwechsel oder ähnlichen, lande ich beim Debuggen sehr oft in der Unit "IdIOHandlerStack" (procedure TIdConnectThread.Execute im Except Abschnitt. Das blöde ist nur, selbst wenn ich durch meine Funktion mit F7/F8 durch debugge, lande ich auf einmal in dieser Unit und wenn man nicht aufpasst so schnell, debuggt man auf einmal 2/3 Zeilen dieser Unit
Kann ich das irgendwie abschalten, dass ich dort nicht lande, weil ich ja weiß, das Gerät A nicht da ist?
Das wird über das TimeOut Verbindungsaufbaues kommen zum Gerät A
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 11:44
Spontan fallen mir zwei Möglichkeiten ein bei denen ich aber nicht sagen kann, ob sie dir weiterhelfen.

Zum Einen erscheint ja beim Debuggen und beim Auftreten einer Exception immer der Dialog mit den berühten Tasten "Anhalten", "Fortsetzen", "Abbrechen". Dort gibt es ja auch noch eine CheckBox "Bei Exceptions dieses Typs nicht anhalten". Hierbei weiß ich aber nicht, ob dir das weiterhilft, da Indy ja doch sehr viele verschiedene Exceptions wirft und auch gleiche Exceptions in deinen anderen Units dann auch nicht mehr abgefangen werden.

Die zweite Möglichkeit ist, sagen wir mal, nur umsetzbar, wenn es sich dabei um wenige Methoden in der Indy Unit handelt. Dann könntest du in der Methode einen BreakPoint setzen und bei den Eigenschaften den Haken bei "Anhalten" rausnehmen und bei "Spätere Exceptions ignorieren" einfügen.

Alternativ dazu könntest du die gesamte Netzwerk Funktion außer Betrieb nehmen. Hierzu müsste man allerdings dein Projekt und dein SourceCode kennen um zu wissen was du denn überhaupt debuggen möchtest und wie das mit den Netzwerk Funktionen zusammenhängt.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 13:08
Das "normale" Exception Fenster mit anhalten usw kommt ja gar nicht. Ich lande direkt in der Unit als wenn da ein Breakpoint wäre im Exception Teil...
Ein paar Exception-Typen habe ich bereits in der Ignore Liste aufgenommen:
EIdNotASocket
EIdConnectTimeout

Ich kann also den Haken für "diesen Typ nicht mehr anzeigen" gar nicht auswählen, weil der Dialog gar nicht kommt.

Die einzige Lösung bisher ist, dass ich den Bereich der Indy ausklammere, sodass die Netzwerkfunktionen im Projekt keine Rolle spielen und ich kann in Ruhe meine Sachen debuggen. Dachte nur, dies wäre nicht die einzige Lösung
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 13:18
Bei den Quellen zu meinem Delphi fliegt in der von Dir genannenten Methode eventuell ein EIdSocketError. Den würd' ich mal mit in die Ignore Liste aufnehmen.

Der zweite Exceptionblock fragt halt nur nach e : Exception, da mal prüfen, was genau für 'ne Exception da bei Dir auftritt und die mit in die Ignore Liste aufnehmen.
(Mal e.ClassName abfragen.)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 13:27
Einfach EIdException in die ignore-Liste aufzunehmen geht nicht? Neben den Dialogen die beim Auftreten einer Exception angezeigt werden gibt es ja auch die ignore-Liste unter Debugging - Sprach-Exceptions. Da kann man EIdException hinzufügen.
Michael Justin
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 13:44
Klar, wenn alle Indy-Exceptions ignoriert werden sollen, wäre das die erste Wahl.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 13:58
E.ClassName = Nicht verfügbarer Wert
E.Message = 'Socket-Fehler # 10038Socket-Operation für Nicht-Socket.'#$D#$A

Ich lande im Except Teil von:

Delphi-Quellcode:
procedure TIdConnectThread.Execute;
begin
  try
    FBinding.Connect;
  except
    on E: Exception do begin
                                                                                                       
      FExceptionOccured := True;
      FExceptionMessage := E.Message;
      if E is EIdSocketError then begin
        if (EIdSocketError(E).LastError <> Id_WSAEBADF) and (EIdSocketError(E).LastError <> Id_WSAENOTSOCK) then begin
          FLastSocketError := EIdSocketError(E).LastError;
        end;
      end;
    end;
  end;
end;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 14:17
Ok, die Methode sieht anders aus, als bei meiner Delphiversion.

Schau bitte mal nach, ob es einen ausführlichen Kommentar zur procedure TIdStack.RaiseSocketError(AErr: integer); gibt, bei meiner Version ist das der Fall. Dort gibt es auch Hinweise zum Fehler 10038, aber mehr als EIdNotASocket muss in die Ignore Liste (was ja schon geschehen ist), kann ich da auch nicht erkennen.

Ist e.ClassType auch unbekannt?
Sonst darüber schauen, welche Exception/s noch in die Ignore Liste muss / müssen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 14:53
Nochmal dass ich das richtig verstehe:

Das "Exceptions im Debugger ignorieren" hat hiermit doch nichts zu tun! Angenommen ich wandere mit F8 schön Schritt für Schritt durch meine Anwendung in meinem mir ausgesuchten Thread. Irgendwann tritt, in einem völlig anderen Thread, eine Exception auf und mit F8 geht es nun plötzlich im except-Teil eines völlig anderen Threads weiter. So habe ich das verstanden. Ob zwischendurch noch einmal das modale "Exception XY aufgetreten" Fenster kommt oder man es unterdrückt hat spielt eigentlich keine Rolle.

So habe ich das verstanden. Und ich kenne das auch, kenne dafür aber auch keine Lösung.

Du wirst also gezwungen sauberen Code zu schreiben der nicht an deine Indy-Implementation gekoppelt ist sondern dass du für deinen Debug-Marathon einfach eine leere Fake-Implementation verwenden kannst und die Indy-Exceptions nicht mehr auftreten.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
Ort: Stadthagen
384 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Indy Exceptions in der IDE bewusst abschalten

  Alt 27. Jun 2017, 20:18
Zitat:
Das "Exceptions im Debugger ignorieren" hat hiermit doch nichts zu tun! Angenommen ich wandere mit F8 schön Schritt für Schritt durch meine Anwendung in meinem mir ausgesuchten Thread. Irgendwann tritt, in einem völlig anderen Thread, eine Exception auf und mit F8 geht es nun plötzlich im except-Teil eines völlig anderen Threads weiter. So habe ich das verstanden. Ob zwischendurch noch einmal das modale "Exception XY aufgetreten" Fenster kommt oder man es unterdrückt hat spielt eigentlich keine Rolle.
Genau so ist es... Schade das es dafür keine Lösung gibt. Danke aber für die Tipps
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz