Can new debugger evaluate properties with getters/setters ? This is very long awaited feature )
Not, yet.
But, first progress in this direction has actually been made. Joost added "function calling in watches" (so a lot of functions currently are not avail for calling).
Afaik, Joost is now also looking into adding the requirements to the compiler.
The problem with properties has always been many fold.
The debugger can only access data, that the compiler provides in the debug info.
At current properties are not included in this. The compiler doesn't put the info in there.
To make it worse, the debug info format, does not even provide an official format for that.
But it allows to add proprietary data.
(Afaik) Joost is now working on adding such proprietary data.
So when he is done, that goes into the (then to be) next major fpc release.
Since FpDebug has function calling (though that needs to tested, and likely improved / but it is there), once Fpc writes the data, it will work.
Calling function in watches.
*** This is new and not much tested / If it crashes, report it. But do not complain about your IDE taking the current session to the grave ***
Must be enabled, in global debugger settings.
Must be enabled per watch.
Works only for
- plain functions (not methods)
- methods, if and only if, their function body (the actual code) is in the same unit, as the declaration of the variable holding the instance you are inspecting
var a: TMyList // in unit42
watch: a.GetBar(); // "function TMyList.GetBar()" must be declared and implemented in unit42
// if "a" is global, then your "current execution line" can be anywhere else
- must be called using ()
- must return an ordinal type (no strings yet)
- takes either no arguments, or only 2 or 3 arguments max (depends on OS)
- all arguments must be ordinal types
As I said, this is all very new. It's not yet indented for real use. But it is progress. There is actual work on the issue now.