การดีบักคุณสมบัติอัตโนมัติ


126

มีวิธีใดบ้างในการตั้งค่าเบรกพอยต์บน setter / getter ในคุณสมบัติที่ใช้งานอัตโนมัติ

int Counter { get; set; }

นอกเหนือจากการเปลี่ยนเป็นคุณสมบัติมาตรฐาน (ฉันกำลังทำในลักษณะนี้ แต่ในการทำเช่นนั้นฉันต้องเปลี่ยนและคอมไพล์โครงการใหม่ทั้งหมด)


2
คุณทำงานกับ IDE อะไร? Visual Studio? (ฉันขอแนะนำให้คุณเพิ่มแท็กที่เกี่ยวข้องในคำถามของคุณเนื่องจากจริงๆแล้วสิ่งนี้เกี่ยวข้องกับ IDE เฉพาะมากกว่าภาษา C # เอง)
stakx - ไม่ให้ข้อมูลใน

5
@stakx ในโลก. NET เรามี IDE เริ่มต้น :)
Stilgar

1
@Stilgar ฉันรู้ว่าฉันใช้ VS ตัวเองหลังจากทั้งหมด แต่ "ค่าเริ่มต้น" ไม่ได้หมายความว่าเป็นเพียงค่าเดียวหรือทุกคนใช้ เนื่องจากนี่เป็นคำถาม IDE ดังนั้นจึงเป็นเรื่องสำคัญที่ต้องทราบว่าเรากำลังดู IDE ใดอยู่ที่นี่ ดังนั้นความคิดเห็นก่อนหน้าของฉัน
stakx - ไม่ร่วมให้ข้อมูลใน

4
@stakx ได้ดีเมื่อไม่มีการกล่าวถึง IDE สำหรับคำถามที่เกี่ยวข้องกับ. NET จะถือว่าเป็น VS. ยิ่งไปกว่านั้นฉันมักจะล้อเล่น :)
Stilgar

คำตอบ:


220

การใช้ Visual Studio 2008, 2010, 2012, 2013:

  1. ไปที่หน้าต่างเบรกพอยต์
  2. ใหม่ -> แตกที่ฟังก์ชั่น ...
  3. สำหรับgetประเภท:ClassName.get_Counter()

    สำหรับsetประเภท:ClassName.set_Counter(int)

คุณจะได้รับ"No Source Available"เมื่อจุดพักถูกตี แต่คุณจะได้รับตำแหน่งการโทรในกลุ่มการโทร

ฉันพบวิธีแก้ปัญหานี้ที่นี่ใน MSDN


Briliant ขอบคุณ ฉันไม่จำเป็นต้องเปลี่ยนคุณสมบัติอัตโนมัติเป็นคุณสมบัติมาตรฐาน (พร้อมฟิลด์) อีกต่อไป และไม่มีการเรียบเรียงใหม่อีกต่อไป :)
Marek Kwiendacz

9
นอกจากนี้ยังใช้ได้กับตัวสร้างเริ่มต้น ใช้ClassName.ctor
Călin Darie

11
VS2015 ได้แก้ไขปัญหานี้โดยเพียงแค่ตั้งค่าจุดพักบน auto getter & setter :)
cateyes

1
ไม่ทำงานที่นี่ ฉันลองทั้งสองอย่างForm.set_HeightและMainWindow.set_Heightไม่ได้ผล
Hi-Angel

@ Hi-Angel โปรดสังเกตว่าสำหรับ setters คุณต้องระบุประเภทดังนั้นบางอย่างเช่น Form.set_Height (int)
Matt Smith

7

ถ้าฉันเป็นคุณฉันจะทำให้สถานที่ให้บริการเป็นมาตรฐานชั่วคราวโดยมีช่องภายใน ... ตั้งค่าจุดพักของคุณจากนั้นคุณสามารถเปลี่ยนกลับได้ในภายหลัง




0

ตั้งค่าเบรกพอยต์ที่คุณตั้งค่าคุณสมบัติหรือรับคุณสมบัติไม่มีวิธีอื่น

คุณสามารถทำได้โดยตัวเลือกค้นหาการอ้างอิงทั้งหมด

และเนื่องจากเป็นเพียงการจัดเก็บค่าและไม่มีรหัสใด ๆ ในส่วน setter คุณจะแก้จุดบกพร่องอย่างไร?


3
ใช่ แต่เมื่อคุณใช้ในสถานที่เช่น 20 แห่งล่ะ? และทุกจุดพักใหม่จะทำให้กระบวนการดีบักช้าลง หรือจะเกิดอะไรขึ้นถ้าการเข้าถึงคุณสมบัติทำได้โดยเฟรมเวิร์ก (ตัวอย่างเช่นการทำให้เป็นอนุกรม)?
Marek Kwiendacz

1
จุดแบ่งตามเงื่อนไข ใส่จุดพักคลิกขวาแล้วกำหนดเงื่อนไขให้ ...
ฟิล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.