Automatische Eigenschaften debuggen


126

Gibt es eine Möglichkeit, den Haltepunkt für Setter / Getter in der automatisch implementierten Eigenschaft festzulegen?

int Counter { get; set; }

Anders als das Ändern in eine Standardeigenschaft (ich mache es auf diese Weise, aber um das zu tun, muss ich das gesamte Projekt ändern und neu kompilieren)


2
Mit welcher IDE arbeiten Sie? Visual Studio? (Ich schlage vor, Sie fügen Ihrer Frage ein entsprechendes Tag hinzu, da dies eher mit einer bestimmten IDE als mit der C # -Sprache selbst zusammenhängt.)
stakx - trägt nicht mehr am

5
@stakx in der .NET-Welt haben wir eine Standard-IDE :)
Stilgar

1
@Stilgar, mir ist das bewusst, ich benutze schließlich selbst VS. "Standard" bedeutet jedoch nicht, dass es das einzige ist oder dass jeder es verwendet. Da es sich um eine IDE-Frage handelt, ist es wichtig zu wissen, welche IDE wir hier betrachten. Daher mein vorheriger Kommentar.
stakx - trägt nicht mehr am

4
@stakx Nun, wenn die IDE für eine .NET-bezogene Frage nicht erwähnt wird, wird angenommen, dass es sich um VS handelt. Was mehr ist, machte ich meistens Witze :)
Stilgar

Antworten:


220

Verwenden von Visual Studio 2008, 2010, 2012, 2013:

  1. Gehen Sie zum Haltepunktfenster
  2. Neu -> Funktionsunterbrechung…
  3. Geben Sie für getFolgendes ein:ClassName.get_Counter()

    Geben Sie für setFolgendes ein:ClassName.set_Counter(int)

Sie erhalten eine "Keine Quelle verfügbar", wenn der Haltepunkt erreicht wird, aber Sie erhalten den aufrufenden Speicherort im Aufrufstapel.

Ich habe diese Lösung hier auf MSDN gefunden


Genial. Vielen Dank. Ich muss die automatischen Eigenschaften nicht mehr in die Standardeigenschaften (mit Feld) ändern. Und keine Neukompilierung mehr :)
Marek Kwiendacz

9
Dies funktioniert auch für Standardkonstruktoren. Verwenden SieClassName.ctor
Călin Darie


1
Funktioniert hier nicht. Ich habe beides ausprobiert Form.set_Heightund beides MainWindow.set_Heighthat nicht funktioniert.
Hi-Angel

@ Hi-Angel, beachte, dass du für Setter den Typ angeben musst, also so etwas wie Form.set_Height (int)
Matt Smith

7

Wenn ich Sie wäre, würde ich die Eigenschaft vorübergehend zu einer Standardeigenschaft machen, die durch ein internes Feld unterstützt wird. Setzen Sie Ihre Haltepunkte, und Sie können sie anschließend wieder ändern.



2

In Visual Studio 2017:

Bewegen Sie den Mauszeiger über das Wort "setzen" -> Rechtsklick -> Haltepunkt -> Haltepunkt einfügen

Vor:

Vor

Nach dem:

Nach dem


0

Setzen Sie Haltepunkte, an denen Sie Eigenschaften festlegen oder Eigenschaften abrufen. Keine andere Möglichkeit.

Sie können dies tun, indem Sie die Optionen Alle Referenzen suchen verwenden

Und da es nur Werte speichert und keinen Code im Setter-Teil enthält, was debuggen Sie?


3
Ja, aber was ist, wenn Sie es zum Beispiel an 20 Orten verwenden? Und jeder neue Haltepunkt verlangsamt den Debugging-Prozess. Oder was ist, wenn der Zugriff auf Eigentum über ein Framework erfolgt (z. B. Serialisierung)?
Marek Kwiendacz

1
Bedingte Haltepunkte. Setzen Sie den Haltepunkt auf, klicken Sie mit der rechten Maustaste darauf und weisen Sie ihm eine Bedingung zu ...
Phill
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.