Debugging a drone project requires functionality that exceeds what a normal windows/linux debugger can provide. For example, setting a debug trace and reporting message in a fast loop would normally produce too many messages to be of any use.
The Arduino debugger in Visual Studio allows TracePoints (or BreakPoints) to be conditional based upon any arduino code (as would be expected by any serious debugger) but it also goes one step further by allowing messages to be limited to any specified rate such as 1 per second.
Another important feature of the Visual Studio debugger for drone projects is the ability to allow variables to be altered without the need for the program being debugged to stop execution (break). The VS debugger has a powerful feature that automatically queues requests to alter variables allowing the request to be processed when the code reaches the specified execution point.
Below we can see multiple "intelligent" messages have been configured to display execution information from an Arduino while the Arduino program is running. The text of these messages do not reside on the Arduino and therefore do not consume vast amounts of limited Arduino memory
Read more here