Debugowanie właściwości automatycznych

126

Czy istnieje sposób na ustawienie punktu przerwania na ustawieniu / pobraniu we właściwości zaimplementowanej automatycznie?

int Counter { get; set; }

Oprócz zmiany na standardową właściwość (robię to w ten sposób, ale aby to zrobić, muszę zmienić i przekompilować cały projekt)

Marek Kwiendacz
źródło
2
Z jakim IDE pracujesz? Visual Studio? (Sugeruję dodanie odpowiedniego tagu do pytania, ponieważ jest to w rzeczywistości bardziej związane z konkretnym IDE niż z samym językiem C #.)
stakx - nie wnoszę już wkładu
5
@stakx w świecie .NET mamy domyślne IDE :)
Stilgar
1
@Stilgar, jestem tego świadomy, w końcu sam używam VS. Ale „domyślny” nie oznacza, że ​​jest jedyny, ani że wszyscy go używają. Ponieważ jest to pytanie dotyczące IDE, ważne jest, aby wiedzieć, którego IDE tutaj szukamy. Stąd mój poprzedni komentarz.
stakx - nie wnosi już
4
@stakx dobrze, gdy nie ma wzmianki o IDE dla pytania związanego z .NET, zakłada się, że jest to VS. Co więcej, głównie żartowałem :)
Stilgar

Odpowiedzi:

220

Przy użyciu programu Visual Studio 2008, 2010, 2012, 2013:

  1. Przejdź do okna Breakpoint
  2. Nowy -> Przerwa w funkcji…
  3. W polu getwpisz:ClassName.get_Counter()

    W polu setwpisz:ClassName.set_Counter(int)

Po trafieniu punktu przerwania otrzymasz komunikat „Brak dostępnego źródła” , ale otrzymasz lokalizację wywołania w stosie wywołań.

Znalazłem to rozwiązanie tutaj w MSDN

Matt Smith
źródło
Wspaniałe. Dzięki. Nie muszę już zmieniać właściwości automatycznych na standardowe (z polem). I
koniec
9
działa to również dla domyślnych konstruktorów. posługiwać sięClassName.ctor
Călin Darie
11
VS2015 naprawił ten problem, ustawiając po prostu punkty przerwania w funkcji automatycznego pobierania i ustawiania :)
cateyes
1
Tu nie działa. Wypróbowałem oba Form.set_Heighti MainWindow.set_Heightżaden z nich nie działał.
Cześć Angel
@ Cześć-Angel, zwróć uwagę, że w przypadku seterów musisz dołączyć typ, więc coś takiego jak Form.set_Height (int)
Matt Smith
7

Na twoim miejscu tymczasowo uczyniłbym tę właściwość standardową wspieraną przez pole wewnętrzne ... ustaw punkty przerwania, a potem możesz to zmienić z powrotem.

Kieron
źródło
2

W programie Visual Studio 2017:

Najedź na „ustaw” słowo -> kliknij prawym przyciskiem myszy -> Punkt przerwania -> Wstaw punkt przerwania

Przed:

Przed

Po:

Po

andreyk2 Hohlov
źródło
0

Ustaw punkty przerwania, w których ustawiasz właściwość lub uzyskujesz właściwość, nie ma innego sposobu.

możesz to zrobić, korzystając z opcji Znajdź wszystkie odwołania

A ponieważ przechowuje tylko wartości i nie ma żadnego kodu w części ustawiającej, więc co debugujesz?

TalentTuner
źródło
3
tak, ale co, gdy używasz go np. w 20 miejscach? Każdy nowy punkt przerwania spowalnia proces debugowania. A co, jeśli dostęp do właściwości odbywa się za pomocą platformy (na przykład serializacji)?
Marek Kwiendacz
1
Warunkowe punkty przerwania. Umieść punkt przerwania, kliknij go prawym przyciskiem myszy i przypisz mu warunek ...
Phill