How to set conditional breakpoints in Visual Studio?
Asked Answered
M

14

156

Is there an easy way to set conditional breakpoints in Visual Studio?

If I want to hit a breakpoint only when the value of a variable becomes something, how can I do it?

Moonlight answered 12/7, 2011 at 20:8 Comment(4)
Note that Express edition does not have this functionality.Cotenant
I'm using Express 2015 and it has the ability for conditional breakpointsPownall
The community edition of 2017 also has conditional breakpointsPythagoreanism
@AlexeiLevenkov Community 2022 has it.Remitter
S
207

Set a breakpoint as usual. Right click it. Click Condition.

Scully answered 12/7, 2011 at 20:10 Comment(3)
In VS 2015 you need to hover over the breakpoint and click the gear icon to set conditionsPownall
You mean, right click, set condition, get "Condition for a breakpoint failed" error.. didn't you?Navarro
Answer should also include syntax for conditional statements, or an informative link.Submergible
I
59

When you are using Express edition you can try this:

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

The #if-statement makes sure that in the release build, breakpoint will not be present.

Incomparable answered 18/11, 2013 at 11:10 Comment(1)
This has a great performance/time-saving advantage. I was iterating through every potential int 'id' in a program of mine (only about 3.5 million), which only takes a couple of seconds. I was trying to use the conditional breakpoint but since it wasn't in a conditional branch it slowed down the execution speed to the point where after a few minutes I would just terminate the debug session. Using the compiled breakpoint made it instantaneous.Q
R
37

Visual Studio provides lots of options for conditional breakpoints:

To set any of these you

  1. Set a breakpoint.
  2. Right-Click over the breakpoint, and in the popup menu you select an option that suites you.

These options are as follows:

  • You can set a condition, based on a code expression that you supply (select Condition from the popup menu). For instance, you can specify that foo == 8 or some other expression.
  • You can make breakpoints trigger after they have been hit a certain number of times. (select Hit Count from the popup menu). This is a fun option to play with as you actually aren't limited to breaking on a certain hit count, but you have options for a few other scenarios as well. I'll leave it to you to explore the possibilities.
  • You can Set filters on the Process ID, thread ID, and machine name (select Filter from the popup menu)
Rawdon answered 12/7, 2011 at 20:23 Comment(0)
A
17

Just another way of doing it, (or if you are using express) add the condition in code:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}
Apocrypha answered 28/5, 2014 at 11:46 Comment(0)
J
9
  1. Set breakpoint on the line
  2. Right clik on RED ball
  3. Chose conditioal breakpoint
  4. Setup condition
Jeanejeanelle answered 12/7, 2011 at 20:10 Comment(0)
P
9

Writing the actual condition can be the tricky part, so I tend to

  1. Set a regular breakpoint.
  2. Run the code until the breakpoint is hit for the first time.
  3. Use the Immediate Window (Debug > Windows > Immediate) to test your expression.
  4. Right-click the breakpoint, click Condition and paste in your expression.

Advantages of using the Immediate window:

  • It has IntelliSense.
  • You can be sure that the variables in the expression are in scope when the expression is evaluated.
  • You can be sure your expression returns true or false.

This example breaks when the code is referring to a table with the name "Setting":

table.GetTableName().Contains("Setting")
Priorate answered 12/5, 2015 at 21:30 Comment(0)
N
5

Create a breakpoint as you normally would, right click the red dot and select "condition".

Neddy answered 12/7, 2011 at 20:10 Comment(0)
E
5

On Visual Studio 6.0

Alt+F9!!!

Ejective answered 8/4, 2013 at 6:50 Comment(2)
-1) This doesn't work in VS 2012 2) This question already has plenty of other (better) answers and 3) who on earth cares about VS 6.0 (released in 1998)? 4) Even if someone cares about VS 6, the question is tagged with .Net which didn't have support until the next version of VS (Visual Studio .Net)Hakodate
Well, the other answers do not work on VS 6.0. So I posted a solution.Ejective
F
4
  1. Set a breakpoint as usual
  2. Right click on the breakpoint and select Condition
  3. You'll see a dialog that says "Breakpoint Condition"
  4. Put a condition in the field e.g. "i==5"

The breakpoint will only get hit when i is 5.

Fitzsimmons answered 12/7, 2011 at 20:11 Comment(0)
B
4
  1. Set a breakpoint as usual.
  2. Right-click on the breakpoint marker
  3. Click "Condition..."
  4. Write a condition, you may use variable names
  5. Select either "Is True" or "Has Changed"
Bautram answered 12/7, 2011 at 20:13 Comment(0)
G
2

You can control when and where a breakpoint executes by setting conditions. The condition can be any valid expression that the debugger recognizes. For more information about valid expressions, see Expressions in the debugger.

To set a breakpoint condition:

  1. Right-click the breakpoint symbol and select Conditions (or press Alt + F9, C). Or hover over the breakpoint symbol, select the Settings icon, and then select Conditions in the Breakpoint Settings window.

    You can also set conditions in the Breakpoints window by right-clicking a breakpoint and selecting Settings, and then selecting Conditions.

enter image description here

  1. In the dropdown, select Conditional Expression, Hit Count, or Filter, and set the value accordingly.

  2. Select Close or press Ctrl+Enter to close the Breakpoint Settings window. Or, from the Breakpoints window, select OK to close the dialog.

Breakpoints with conditions set appear with a + symbol in the source code and Breakpoints windows.

Gallice answered 19/9, 2021 at 8:8 Comment(0)
I
1

Create a conditional function breakpoint:

  1. In the Breakpoints window, click New to create a new breakpoint.

  2. On the Function tab, type Reverse for Function. Type 1 for Line, type 1 for Character, and then set Language to Basic.

  3. Click Condition and make sure that the Condition checkbox is selected. Type instr.length > 0 for Condition, make sure that the is true option is selected, and then click OK.

  4. In the New Breakpoint dialog box, click OK.

  5. On the Debug menu, click Start.

Inquiring answered 12/7, 2011 at 20:11 Comment(0)
S
1

Set the breakpoint as you do normally, right click the break point and select condion option and sets your condition.

Stevenage answered 12/7, 2011 at 20:12 Comment(0)
B
0

If you came from Google, this answer might be what you are searching for.

  1. Click Debug> New BreakPoint > Function Breakpoint enter image description here

  2. there choose the conditional Breakpoint.

Bromic answered 20/7, 2020 at 11:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.