Frage von KnorxyThieus, 39

C#: Warum stürzt der Debugger von Visual Studio immer ab, wenn beim Anzeigen von Variablen eine Eigenschaft eine Ausnahme auslöst?

Hallo,

Ich habe schon festgestellt, dass die Ursache für den stillen Absturz des Debuggers, wenn ich eine Variable aufgeklappt habe, darin bestand, dass beim Aufrufen eines Eigenschaftsaccessors eine Ausnahme ausgelöst wurde. Auch, dass man den impliziten Aufruf dessen seitens des Debuggers in den Einstellungen deaktivieren kann. Das ist aber ziemlich unpraktisch fürs Debuggen ...
Ich würde gerne lieber eine Fehlermeldung, die übliche Ausnahmenanzeige von VS erhalten, wenn beim impliziten Aufruf des Accessors etwas schiefgeht.

Wieso stürzt der Debugger in diesem Fall stattdessen aber immer - kommentarlos - ab?
Und wie kann ich das ändern?

Vielen Dank für eure Tipps schon mal! :)

Mit freundlichen Grüßen,
KnorxThieus (♂)

Antwort
von CrystalixXx, 30

Wann genau stürzt der Debugger ab?

Hast du den Programmablauf über einen Haltepunkt angehalten und gehst schrittweise durch den Code? Wenn du dann den Wert einer Eigenschaft über im Visual Studio anzeigen lässt, in dem du mit der Maus drüber fährst, stürzt der Debugger ab? Meinst du damit, dass der gesamte Ablauf und das Debugging einfach beendet wird?

Ist die Option Debugging - Allgemein - "Ausnahmen-Assistenten aktivieren" gesetzt?

Kommentar von KnorxyThieus ,

Wann genau stürzt der Debugger ab?

Beim Aufklappen einer Eigenschaft einer Variable, deren get-Accessor eine Ausnahme verursachte - inzwischen habe ich festgestellt, dass dies eine StackOverflowException war, und sie behoben. (Was aber nichts am grundsätzlichen Problem ändert.)

Zu den anderen Fragen: Ja, nicht probiert, ja: Ich lande nach dem Absturz einfach wieder im Codefenster und die Debugging-Prozesse sind weg. Wenn es nochmal auftritt, kontrolliere ich die Ausgabe.

Der Ausnahmenassistent ist auch aktiviert.

Dass es nun eine StackOverflowException war, ändert das Ganze ja ein bisschen - die kann man ja auch nicht catchen. Aber es kann doch grundsätzlich nicht stimmen, dass der Debugger einfach abstürzt, ohne dass ich irgendeine Fehlermeldung kriege!

Kommentar von CrystalixXx ,

Wenn ich eine Klasse mit einer Eigenschaft erzeuge, die beim Abrufen des Wertes eine StackOverflowException auslöst, dann erhalte ich ein ähnliches Verhalten von VS.

Läuft das Programm einfach so durch, dann hält VS an der Eigenschaft an und meldet die Ausnahme. Halte ich den Ablauf aber durch einen Breakpoint an und fahre mit der Maus über die Eigenschaft, beendet sich ebenfalls der Debugger - wortlos.

Es scheint wohl ein Fehler im Visual Studio zu sein. Welche Version verwendest du denn? Ich konnte es zumindest mit Visual Studio 2010 rekonstruieren.

Kommentar von KnorxyThieus ,

Tja, das ist bei VS 2015 immer noch so :(

Kommentar von CrystalixXx ,

Man könnte versuchen einen eigenen Visualizer für Visual Studio zu schreiben. Dazu müsste man die CLR in einer eigenen Umgebung hosten, um die StackOverflowException abfangen zu können. Vermute ich; ich habe mich bisher nicht näher damit auseinandergesetzt.

Keine passende Antwort gefunden?

Fragen Sie die Community