One thing I wonder: in Lazarus, blue dots appear in the editor gutter when debugging is started. They disappear when debugging is finished. In Delphi, blue dots appear after compilation/build is completed and remain after debugging is completed. What is the reason for this difference in the behavior of both IDEs?
I don't know how Delphi implements them.
If they are loaded from debug info, or if the Delphi compiler creates dedicated info for the IDE. (Like fpc could (for other purposes) with "-b" generate info for an IDE)).
In Lazarus, they come from the debug info. Without this, this, the IDE can not find out which source lines did generate machine code. (also that means, strictly speaking where fpc associates it, as sometimes fpc moves this when optimizing...).
So historically, Lazarus got them using GDB, and that only happened when the debugger started.
FpDebug too, only loads them when it starts debugging.
Though having a build in reader, the IDE could read that info at an earlier point. That raises the same question as keeping them after debugging does => what for?
As soon as you edit, there is a chance that they become inaccurate. That is true even during debugging, but usually with more extensive editing being done while the debugger does not run, the issue gets more noticeable.
If you break a line into 2, and then join each part with other lines (that may or may not have been added after the last compilation) then the blue dots aren't very accurate any more.
Also as for seeing if IFDEFed code is active, the Lazarus IDE highlights that without the need of compiling. The only part it wont show you is dead code elimination. "if false then".
The only case were loading them after compile would be needed is, if you set your project to "not compile automatically". So you can
- compile
- edit
- run/debug without compiling the recent edits
Then of course you want the blue dots after compile, because they secretly contain the mapping of any changed line numbers due to edit after the compile (which helps setting breakpoints).
(Afaik delphi does not map line numbers for edited code ?)
Anyway, I also think of the blue dots as a nice indicator that the debugger is running. So thats a point for the current behaviour.