Hi uChip,
Thanks for the feedback. I will try to give some initial responses below although short of time today so might revisit over the next few days.
Quote: - Intellisense seems to work, but keyword coloring is not the same as the Arduino IDE. For instance analogWrite is colored in the Arduino IDE but not in VS/VM. I did set up PDE and INO in the Options dialog and have switched board types a few times.
We use the VS C++ intellisense system. In the background, we override where VS looks for C++ sources, ensure the project knows about multiple .pde files and ensure lib paths/defines are correct.
This means that color coding and intellisense will work in the same way that it would with a C++ project. This does mean that all MS and OEM extensions and helpers (such as VisualAssistX) can work unhindered by any Arduino color coding.
Personally I don't like VS extensions that "mess" with the color coding or any properties directly in a code editor because it always seems to cause typing and moving around code editors to become slower. It has been a big priority of this project to implement only what will cause VS to continue to operate at full speed.
However, if I get enough requests, I would be happy to look at implementing the same color coding that the arduino ide implements. The arduino ide uses the keyword.txt files that are distributed with the core and libs to deduce color coding, whereas, VS looks at the code to deduce color coding and can be further configured via the customization and options system
Quote: - If I set a breakpoint and print a message using "When Hit..." and I clear the "Continue execution" checkbox the code does not stop. I see the message in the Output window but execution continues.
Because so many new and inexperienced users work with the debugger I decided it would be dangerous to allow the break/pause functionality to work without users specifically giving permission. Imagine an auto pilot of a plane pausing at a breakpoint, the plane/drone/robot would certainly crash and many new users would not realize the consequences so the default if OFF.
Therefore you need to give permission for the project to break/pause by setting the
"Enable Break/Pause" project property to True. The default is false which causes all breakpoints to be treated as TracePoints.
Quote: - There is no "Stop Debugging" in the Arduino debugger. This is not really a problem, but in combination with the above, it is a little disconcerting.
Another difference between desktop and arduino debug is that the arduino debug can be running for months, when you next open VS and start the serial monitor for the project it will resume debug mode. This is because arduino does not support debugging so this solution injects "special" serial.print statements into the arduino program prior to upload.
So this means that the serial window is responsible for debug, closing the serial window or un-tick "connect" to stop the debug.
Having said all this I do intend to add a tool bar for debug and also to add a "stop debug" option to the "Debug" menu. These options will do as I describe above but will certainly be more obvious for users. I think this especially applies to users who have worked more with windows than arduino in the past
Quote: - At one point I had two Arduino boards attached to the PC at the same time. I loaded firmware into one, then closed that project and loaded a different project with the firmware for the second. Even though I switched COM ports the debugger seemed to get confused and continued to give me the Expressions window for the first instance instead of the second. It did upload the code to the correct board and the COM port monitor was correct. Just the Expressions window was in error.
There is a known bug in the current version where the title of the expressions window is wrong but that it does show the correct data and is tied to the correct port