Debug delle proprietà automatiche


126

Esiste un modo per impostare il punto di interruzione sul setter / getter nella proprietà implementata automaticamente?

int Counter { get; set; }

Oltre a cambiarlo in proprietà standard (lo sto facendo in questo modo, ma per farlo devo cambiare e ricompilare l'intero progetto)


2
Con quale IDE stai lavorando? Visual Studio? (Ti suggerisco di aggiungere un tag corrispondente alla tua domanda, dal momento che questo è in realtà più correlato a un particolare IDE che al linguaggio C # stesso.)
stakx - non contribuisce più il

5
@stakx nel mondo .NET abbiamo un IDE predefinito :)
Stilgar

1
@Stilgar, ne sono consapevole, sto usando VS me stesso, dopo tutto. Ma "default" non significa che è l'unico, né che tutti lo usano. Dal momento che questa è una domanda IDE, quindi è importante sapere quale IDE stiamo guardando qui. Da qui il mio commento precedente.
stakx - non contribuisce più al

4
@stakx bene quando non si fa menzione dell'IDE per una domanda relativa a .NET si presume che sia VS. Inoltre, stavo scherzando soprattutto :)
Stilgar il

Risposte:


220

Utilizzando Visual Studio 2008, 2010, 2012, 2013:

  1. Vai alla finestra Breakpoint
  2. Nuovo -> Break at Function ...
  3. Per get, digitare:ClassName.get_Counter()

    Per set, digitare:ClassName.set_Counter(int)

Riceverai una "Nessuna fonte disponibile" quando viene raggiunto il punto di interruzione, ma otterrai la posizione di chiamata nello stack di chiamate.

Ho trovato questa soluzione qui su MSDN


Briliant. Grazie. Non ho più bisogno di cambiare le proprietà automatiche in una standard (con campo). E non più ricompilazione :)
Marek Kwiendacz,

9
questo funziona anche per i costruttori predefiniti. usoClassName.ctor
Călin Darie,

11
VS2015 ha risolto questo problema semplicemente impostando i punti di interruzione sul getter automatico e sul setter :)
cateyes,

1
Non funziona qui. Ho provato entrambi Form.set_Heighte MainWindow.set_Height, nessuno dei due ha funzionato.
Ciao Angelo

@ Ciao Angelo, nota che per i setter devi includere il tipo, quindi qualcosa come Form.set_Height (int)
Matt Smith

7

Se fossi in te, renderei temporaneamente la proprietà standard supportata da un campo interno ... impostare i tuoi punti di interruzione, e poi puoi cambiarlo dopo.



3

Su Visual Studio 2017:

Passa il mouse sopra la parola "imposta" -> tasto destro -> Punto di interruzione -> Inserisci punto di interruzione

Prima:

Prima

Dopo:

Dopo


0

Impostare i punti di interruzione in cui si imposta la proprietà o si ottiene la proprietà, nessun altro modo.

puoi farlo selezionando le opzioni Trova tutti i riferimenti

E dal momento che memorizza solo valori e non ha alcun codice nella parte setter, quindi cosa fai il debug?


3
sì, ma cosa succede quando lo usi in ad esempio 20 posti? E ogni nuovo breakpoint rallenta il processo di debug. Oppure cosa succede se l'accesso alla proprietà avviene tramite framework (ad esempio serializzazione)?
Marek Kwiendacz,

1
Punti di interruzione condizionale. Indossa il punto di interruzione, fai clic con il pulsante destro del mouse e assegna una condizione ad esso ...
Phill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.