Debugging Tutorial Part 1: What Breakpoints Are Good For

Note IconNote:

If Visual Micro is not working as described here, then you might have changed a setting from its default state.
In this case go to this page and modify the settings marked with the Tutorial Icon icon.
The first page of this tutorial shows you how to setup the training sketch and the required settings for Visual Micro.


The BlinkWithoutDelay example lets the LED on the board blink, without using the delay() function.

 

You will notice a demo breakpoint at the start of the loop() function. It is the red dot besides the code line. Visual Micro tutorial mode -which we have enabled earlier- has set this breakpoint automatically for you.

Demo Breakpoint

 

You will notice that our LED is not blinking. This is because your sketch is stopped in the demo breakpoint at the start of the loop() function.

You can see this in the Output Window (if needed make it visible with View > Output):

Demo Breakpoint Output Window
1
This is the exact time when the breakpoint was hit
2
These are the source file and line number, where the breakpoint is located
3
This shows the actual value of a variable or function, in this case 'millis()'. This is how the demo breakpoint is configured. Later you will see, how you can configure breakpoints to show the values of the variables you need

You can continue the sketch by pressing [F5]. Since the breakpoint is in the loop() function, and loop() is called over and over again, your code will immediately stop at the next entry of loop(), which means: immediately.

This shows you some obvious benefits of breakpoints:

  • If you set multiple breakpoints in your code, you can see which parts of your code are executed in which order when it passes these breakpoints, and if they were executed at all.
  • As long as the code is halted, you can make checks with your hardware, e.g. measure voltages calmly, without the code changing theses voltages all the time.

Setting and deleting breakpoints

Note IconNote:

Breakpoints are "invisible" parts of your code.
Whenever you change something to a breakpoint, you must rebuild your sketch and upload it again, to make the change effective.


Now let's try to set a breakpoint elsewhere. We first want to get rid of the demo breakpoint. Simply put the cursor in the line with the breakpoint and press [F9]. The [F9] key toggles between breakpoint set or not set on that line.

  •  Press [F9] to remove the breakpoint

The board is still halted in the demo breakpoint, even though you have deleted it on your PC - it is still existing on your board. Therefore, we must stop the sketch and upload it again.

  •  Disconnect Visual Micro from your board by clicking on the "Stop" button  Stop icon on toolbar on the toolbar
  •  Move the cursor to the line "previousMillis = currentMillis;" and press [F9] to set a new breakpoint. The red   appears to indicate the breakpoint.
  • Press [F5] or the Stop icon on toolbar toolbar button to build and upload again

Now you will see that the sketch stops at the line where you have set the new breakpoint. With every [F5], the sketch continues and runs until it stops in the breakpoint again. This time, the LED changes between on to off with every [F5].

At this point, you can start to play around with breakpoints yourself, if you like. Please note that there are certain places in code, where breakpoints cannot be set (Details here), but these are minor limitations.

 

You can now continue with part 2 of the tutorial:

2.  Breakpoints that don't stop the sketch