Debugging properti otomatis

126

Apakah ada cara untuk mengatur breakpoint pada setter / pengambil di properti yang diimplementasikan otomatis?

int Counter { get; set; }

Selain mengubahnya menjadi properti standar (saya melakukannya dengan cara ini, tetapi untuk itu saya harus mengubah dan mengkompilasi ulang seluruh proyek)

Marek Kwiendacz
sumber
2
IDE apa yang Anda kerjakan? Studio visual? (Saya sarankan Anda menambahkan tag yang sesuai untuk pertanyaan Anda, karena ini sebenarnya lebih terkait dengan IDE tertentu daripada ke bahasa C # itu sendiri.)
stakx - tidak lagi berkontribusi
5
@stakx di dunia .NET kami memiliki IDE default :)
Stilgar
1
@ Stilgar, saya sadar akan hal itu, saya menggunakan VS sendiri. Tapi "default" tidak berarti bahwa itu satu-satunya, atau semua orang menggunakannya. Karena ini adalah pertanyaan IDE, jadi penting untuk mengetahui IDE mana yang kami cari di sini. Demikian komentar saya sebelumnya.
stakx - tidak lagi berkontribusi
4
@stakx baik ketika tidak ada menyebutkan IDE untuk pertanyaan terkait NET. Diasumsikan bahwa itu adalah VS. Terlebih lagi saya kebanyakan bercanda :)
Stilgar

Jawaban:

220

Menggunakan Visual Studio 2008, 2010, 2012, 2013:

  1. Pergi ke jendela Breakpoint
  2. Baru -> Break at Function ...
  3. Untuk get, ketik:ClassName.get_Counter()

    Untuk set, ketik:ClassName.set_Counter(int)

Anda akan mendapatkan "No Source Available" ketika breakpoint terkena, tetapi Anda akan mendapatkan lokasi panggilan di tumpukan panggilan.

Saya menemukan solusi ini di MSDN

Matt Smith
sumber
Briliant. Terima kasih. Saya tidak perlu mengubah properti otomatis ke standar (dengan bidang) lagi. Dan tidak ada lagi kompilasi :)
Marek Kwiendacz
9
ini juga berfungsi untuk konstruktor default. useClassName.ctor
Călin Darie
11
VS2015 telah memperbaikinya dengan hanya mengatur breakpoints pada pengambil otomatis & penyetel :)
cateyes
1
Tidak berfungsi di sini. Saya mencoba keduanya Form.set_Heightdan MainWindow.set_Height, tidak ada yang berhasil.
Hi-Angel
@ Hai-Angel, perhatikan bahwa untuk setter, Anda harus memasukkan tipenya, jadi sesuatu seperti Form.set_Height (int)
Matt Smith
7

Jika saya adalah Anda, untuk sementara saya akan menjadikan properti itu properti standar yang didukung oleh bidang internal ... atur breakpoint Anda, dan kemudian Anda dapat mengubahnya kembali setelahnya.

Kieron
sumber
3

Pada Visual Studio 2017:

Arahkan kursor ke "set" word -> klik kanan -> Breakpoint -> Masukkan Breakpoint

Sebelum:

Sebelum

Setelah:

Setelah

andreyk2 Hohlov
sumber
0

Tetapkan Breakpoints di mana Anda mengatur properti atau mendapatkan properti, Tidak ada cara lain.

Anda dapat melakukan ini dengan opsi Find All Reference

Dan Karena itu hanya menyimpan nilai dan tidak memiliki kode di bagian setter jadi apa yang Anda debug?

TalentTuner
sumber
3
ya, tetapi bagaimana ketika Anda menggunakannya misalnya di 20 tempat? Dan setiap breakpoint baru memperlambat proses debugging. Atau, bagaimana jika akses ke properti dilakukan oleh framework (misalnya serialisasi)?
Marek Kwiendacz
1
Break point bersyarat. Pasang break point, klik kanan dan tetapkan syarat untuk itu ...
Phill