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)

Marek Kwiendacz
quelle
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

Matt Smith
quelle
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
11
VS2015 hat dies behoben, indem nur die Haltepunkte auf dem Auto Getter & Setter gesetzt wurden :)
Cateyes
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.

Kieron
quelle
2

In Visual Studio 2017:

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

Vor:

Vor

Nach dem:

Nach dem

andreyk2 Hohlov
quelle
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?

TalentTuner
quelle
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