วิธีการตั้งค่าเบรกพอยต์ตามเงื่อนไขใน Visual Studio


136

มีวิธีง่ายๆในการตั้งค่าเบรกพอยต์ตามเงื่อนไขใน Visual Studio หรือไม่

ถ้าฉันต้องการตีเบรกพอยต์ก็ต่อเมื่อค่าของตัวแปรกลายเป็นบางอย่างฉันจะทำอย่างไร


11
โปรดทราบว่า Express edition ไม่มีฟังก์ชันนี้
Alexei Levenkov

1
ฉันใช้ Express 2015 และมีความสามารถในการเบรกพอยต์แบบมีเงื่อนไข
mark.monteiro

1
ฉบับชุมชนปี 2017 ยังมีเบรกพอยต์แบบมีเงื่อนไข
PentiumPro200

คำตอบ:


177

ตั้งเบรกพอยต์ตามปกติ คลิกขวา คลิกเงื่อนไข


1
ใน VS 2015 คุณต้องวางเมาส์เหนือเบรกพอยต์แล้วคลิกไอคอนรูปเฟืองเพื่อกำหนดเงื่อนไข
mark.monteiro

คุณหมายถึงคลิกขวาตั้งเงื่อนไขรับข้อผิดพลาด "เงื่อนไขสำหรับเบรกพอยต์ล้มเหลว" .. ใช่หรือไม่?
Toby

1
คำตอบควรมีไวยากรณ์สำหรับคำสั่งเงื่อนไขหรือลิงค์ข้อมูล
Andrew

51

เมื่อคุณใช้ Express edition คุณสามารถลองสิ่งนี้:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

หากคำสั่งทำให้แน่ใจว่าจุดคุ้มทุนของบิลด์ในรีลีสจะไม่มี


3
สิ่งนี้มีข้อได้เปรียบด้านประสิทธิภาพ / การประหยัดเวลาที่ยอดเยี่ยม ฉันทำซ้ำทุก int 'id' ที่เป็นไปได้ในโปรแกรมของฉัน (ประมาณ 3.5 ล้านเท่านั้น) ซึ่งใช้เวลาเพียงไม่กี่วินาที ฉันพยายามใช้เบรกพอยต์แบบมีเงื่อนไข แต่เนื่องจากมันไม่ได้อยู่ในสาขาที่มีเงื่อนไขจึงทำให้ความเร็วในการดำเนินการช้าลงจนถึงจุดที่หลังจากนั้นไม่กี่นาทีฉันก็จะยุติเซสชันการดีบัก การใช้เบรกพอยต์ที่คอมไพล์ทำให้เกิดขึ้นทันที
Goldfish Sandwich

35

Visual Studio มีตัวเลือกมากมายสำหรับเบรกพอยต์แบบมีเงื่อนไข:

เพื่อตั้งค่าสิ่งเหล่านี้ให้คุณ

  1. ตั้งเบรกพอยต์
  2. คลิกขวาที่เบรกพอยต์และในเมนูป๊อปอัปคุณจะเลือกตัวเลือกที่เหมาะกับคุณ

ตัวเลือกเหล่านี้มีดังนี้:

  • คุณสามารถตั้งเงื่อนไขโดยยึดตามนิพจน์รหัสที่คุณระบุ (เลือกเงื่อนไขจากเมนูป๊อปอัป) ตัวอย่างเช่นคุณสามารถระบุว่าfoo == 8หรือนิพจน์อื่น ๆ
  • คุณสามารถทำให้เบรกพอยต์ทริกเกอร์ได้หลังจากที่พวกเขาถูกโจมตีไปแล้วหลายครั้ง (เลือกจำนวนการกดจากเมนูป๊อปอัพ) นี่เป็นตัวเลือกที่น่าสนุกในการเล่นเนื่องจากคุณไม่ได้ จำกัด อยู่ที่การทำลายจำนวน Hit แต่คุณมีตัวเลือกสำหรับสถานการณ์อื่น ๆ ด้วยเช่นกัน ฉันจะปล่อยให้คุณสำรวจความเป็นไปได้
  • คุณสามารถตั้งค่าตัวกรองใน ID กระบวนการ ID เธรดและชื่อเครื่อง (เลือกตัวกรองจากเมนูป๊อปอัพ)


9
  1. ตั้งเบรกพอยต์ในบรรทัด
  2. คลิกขวาบนลูกบอลสีแดง
  3. เลือกจุดพักตามเงื่อนไข
  4. เงื่อนไขการตั้งค่า

9

การเขียนสภาพจริงอาจเป็นส่วนที่ยุ่งยากดังนั้นฉันจึงมักจะ

  1. ตั้งจุดพักปกติ
  2. รันโค้ดจนกว่าเบรกพอยต์จะถูกตีเป็นครั้งแรก
  3. ใช้หน้าต่าง Immediate (แก้ปัญหา> ของ Windows> ทันที) เพื่อทดสอบการแสดงออกของคุณ
  4. คลิกขวาเบรกพอยต์คลิกเงื่อนไขและวางในการแสดงออกของคุณ

ข้อดีของการใช้หน้าต่างทันที:

  • มันมีIntelliSense
  • คุณสามารถมั่นใจได้ว่าตัวแปรในนิพจน์อยู่ในขอบเขตเมื่อนิพจน์ได้รับการประเมิน
  • คุณสามารถตรวจสอบการแสดงออกของคุณกลับจริงหรือเท็จ

ตัวอย่างนี้แตกเมื่อโค้ดอ้างอิงถึงตารางที่มีชื่อ "Setting":

table.GetTableName().Contains("Setting")


4
  1. ตั้งเบรกพอยต์ตามปกติ
  2. คลิกขวาที่เบรกพอยต์และเลือกเงื่อนไข
  3. คุณจะเห็นกล่องโต้ตอบที่ระบุว่า "Breakpoint Condition"
  4. ใส่เงื่อนไขในฟิลด์เช่น "i == 5"

เบรกพอยต์จะได้รับผลกระทบเมื่อฉันอายุ 5 ขวบเท่านั้น


4
  1. ตั้งเบรกพอยต์ตามปกติ
  2. คลิกขวาที่เครื่องหมายเบรกพอยต์
  3. คลิก "เงื่อนไข ... "
  4. เขียนเงื่อนไขคุณอาจใช้ชื่อตัวแปร
  5. เลือก "เป็นจริง" หรือ "มีการเปลี่ยนแปลง"

4

บน Visual Studio 6.0

Alt+ F9!!!


1
-1) สิ่งนี้ใช้ไม่ได้ใน VS 2012 2) คำถามนี้มีคำตอบอื่น ๆ (ที่ดีกว่า) อยู่แล้วและ 3) ใครในโลกที่สนใจ VS 6.0 (เปิดตัวในปี 1998)? 4) แม้ว่าจะมีคนสนใจ VS 6 แต่คำถามก็ถูกแท็กด้วย. Net ซึ่งไม่มีการสนับสนุนจนกว่า VS (Visual Studio .Net) เวอร์ชันถัดไป
Tim Medora

7
คำตอบอื่น ๆ ใช้ไม่ได้กับ VS 6.0 ก็เลยโพสต์วิธีแก้
Vorac

1

ตั้งค่าbreakpointตามที่คุณทำตามปกติคลิกขวาที่จุดพักและเลือกcondionตัวเลือกและกำหนดเงื่อนไขของคุณ


1

สร้างเบรกพอยต์ของฟังก์ชันตามเงื่อนไข:

  1. ในหน้าต่างเบรกพอยต์คลิกสร้างเพื่อสร้างเบรกพอยต์ใหม่

  2. บนแท็บฟังก์ชันพิมพ์ย้อนกลับสำหรับฟังก์ชัน พิมพ์ 1 สำหรับบรรทัดพิมพ์ 1 สำหรับอักขระจากนั้นตั้งค่าภาษาเป็นพื้นฐาน

  3. คลิกเงื่อนไขและตรวจสอบให้แน่ใจว่าได้เลือกกล่องกาเครื่องหมายเงื่อนไขแล้ว พิมพ์instr.length > 0Condition ตรวจสอบให้แน่ใจว่าได้เลือกตัวเลือก is true แล้วจากนั้นคลิก OK

  4. ในกล่องโต้ตอบ New Breakpoint คลิกตกลง

  5. บนเมนูแก้ไขข้อบกพร่องคลิกเริ่ม


0

หากคุณมาจาก Google คำตอบนี้อาจเป็นสิ่งที่คุณกำลังค้นหา

  1. คลิก Debug> New BreakPoint> Function Breakpoint ป้อนคำอธิบายภาพที่นี่

  2. มีให้เลือกเบรกพอยต์ตามเงื่อนไข

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