Gỡ lỗi thuộc tính tự động


126

Có cách nào để đặt điểm dừng trên setter / getter trong thuộc tính được triển khai tự động không?

int Counter { get; set; }

Khác với việc thay đổi nó thành tài sản tiêu chuẩn (Tôi đang làm theo cách này, nhưng để làm được điều đó tôi phải thay đổi và biên dịch lại toàn bộ dự án)


2
Bạn đang làm việc với IDE nào? Visual Studio? (Tôi khuyên bạn nên thêm một thẻ tương ứng vào câu hỏi của mình, vì điều này thực sự liên quan nhiều đến một IDE cụ thể hơn là chính ngôn ngữ C #.)
stakx - không còn đóng góp vào

5
@stakx trong thế giới .NET, chúng tôi có IDE mặc định :)
Stilgar

1
@Stilgar, tôi biết điều đó, sau tất cả, tôi đang sử dụng VS. Nhưng "mặc định" không có nghĩa là nó là duy nhất, cũng không phải ai cũng sử dụng nó. Vì đây là một câu hỏi IDE, vì vậy điều quan trọng là phải biết IDE nào chúng ta đang xem xét ở đây. Do đó bình luận trước của tôi.
stakx - không còn đóng góp

4
@stakx tốt khi không có đề cập đến IDE cho câu hỏi liên quan đến .NET, người ta cho rằng đó là VS. Hơn nữa tôi đã đùa thôi :)
Stilgar

Câu trả lời:


220

Sử dụng Visual Studio 2008, 2010, 2012, 2013:

  1. Chuyển đến cửa sổ Breakpoint
  2. Mới -> Nghỉ tại Chức năng
  3. Đối với get, gõ:ClassName.get_Counter()

    Đối với set, gõ:ClassName.set_Counter(int)

Bạn sẽ nhận được "Không có nguồn" khi điểm dừng được nhấn, nhưng bạn sẽ nhận được vị trí cuộc gọi trong ngăn xếp cuộc gọi.

Tôi tìm thấy giải pháp này ở đây trên MSDN


Sáng chói. Cảm ơn. Tôi không cần phải thay đổi thuộc tính tự động thành tiêu chuẩn (có trường) nữa. Và không cần biên dịch lại :)
Marek Kwiendacz

9
điều này cũng hoạt động cho các nhà xây dựng mặc định. sử dụngClassName.ctor
Călin Darie

11
VS2015 đã khắc phục điều này bằng cách chỉ thiết lập các điểm dừng trên trình tự động & setter tự động :)
cateyes

1
Không làm việc ở đây. Tôi đã thử cả hai Form.set_HeightMainWindow.set_Height, không làm việc.
Hi-Angel

@ Hi-Angel, lưu ý rằng đối với setters, bạn phải bao gồm loại, vì vậy một cái gì đó như Form.set_Height (int)
Matt Smith

7

Nếu tôi là bạn, tôi sẽ tạm thời biến tài sản thành tiêu chuẩn được hỗ trợ bởi trường nội bộ ... đặt điểm dừng của bạn và sau đó bạn có thể thay đổi lại tài sản đó sau.



2

Trên Visual Studio 2017:

Di chuột qua từ "đặt" -> nhấp chuột phải -> Điểm dừng -> Chèn Điểm dừng

Trước:

Trước

Sau:

Sau


0

Đặt Điểm dừng nơi bạn đang đặt thuộc tính hoặc nhận thuộc tính, Không còn cách nào khác.

bạn có thể làm điều này bằng cách tìm tất cả các tùy chọn Tham khảo

Và vì nó chỉ lưu trữ các giá trị và không có bất kỳ mã nào trong phần setter, vậy bạn gỡ lỗi gì?


3
có, nhưng những gì khi bạn sử dụng nó trong ví dụ 20 địa điểm? Và mỗi điểm dừng mới làm chậm quá trình gỡ lỗi. Hoặc, điều gì xảy ra nếu việc truy cập vào tài sản được thực hiện theo khung (ví dụ như tuần tự hóa)?
Marek Kwiendacz

1
Điểm phá vỡ có điều kiện. Đặt điểm dừng, nhấp chuột phải vào nó và gán một điều kiện cho nó ...
Phill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.