Borland Developer Studio 2006: Expandable Evaluation
There have been quite a few new features added to the debugger in the upcoming release Borland Developer Studio 2006. One of those features, “Expandable Evaluation” affects the Evaluator tooltips in the editor, the Watch List View, and the Local Variables View.
In each of those views, you can now drill down into your program’s data structures to see encapsulated members. In previous versions of Delphi, C++Builder, and C#Builder, the only way to easily do this was to use the Debug Inspector (which is mostly unchanged for BDS 2006). Now, however, you no longer need to open up a separate inspector window to look at your data structures.
First, lets look at the evaluator tooltips. Here’s a screenshot of the new tooltip:
Note that the mouse cursor is over “Self” and the tooltip shows up giving you the value of “Self“. You’ll might note, too, that the layout of the tooltips have changed a bit since Delphi 2005. The name of the expression being evaluated is separated from the value by a column separator. You’ll also note that there is a treeview-like plus symbol next to the expression name. If you hover the mouse over this plus symbol (or click on it), a new tooltip will popup showing you the value of all the members of Self. Here’s a screenshot showing that behavior:
Note that the members of Self are shown in the left column, and their values are shown in the right column. Notice that this tooltip has a scroll bar as well (since there are too many members to display). You can scroll the tooltip using the mouse wheel or by clicking on the scroll bar. You’ll also notice that some of the VCL base classes show up in a bold font at the top of the new tooltip. In order to help organize the data and to reduce the volume of data, members are grouped by base class. You can expand the base class name to see members which are inherited from that base class.
There are no limits to how deep you can go. Take a look at this final tooltip screenshot to see the cascading tooltips as you drill down into the various members:
Here, we are basically looking at “Self.spriteImage.FAnchorRules”. You’ll see that “FAnchorRules” has two members, “X” and “Y”, both of whose values are zero. You’ll also note that FAnchorRules is actually inherited from TControl rather than being declared directly in “spriteImage”
As I mentioned earlier, the same functionality also exists in the Watch List view and the Local Variables View.
Here is a screenshot of the Watch List View showing the same level of expansion shown above:
Here is a screenshot of the Local Variables View showing the same level of expansion shown above:
One nice thing about the Watch List view and the Local Variables View is that they dynamically update all the expanded items as well as you step through code.
I should also point out that each of the features shown here are available for each of the 4 language personalities that live in the BDS 2006 IDE (Delphi Win32, Delphi .Net, C++, and C#).
Share This | Email this page to a friend
Posted by Chris Hesik on November 16th, 2005 under CodeGear Debugger |

RSS Feed

November 16th, 2005 at 12:00 pm
Very nice! I’ve been wanting this functionality for a while now for my watches, and to have it for tooltip evaluation as well is icing on the cake. Great work, guys!
November 16th, 2005 at 12:39 pm
Is that the source code of the Easter Egg?
November 16th, 2005 at 12:45 pm
Leonel,
No, though that was a good guess <g>. The code is actually the EarthPng demo that ships with Delphi. I took the screen shots on a machine with the installed build, so I just chose one of the demo programs to use to show the new features.
November 16th, 2005 at 4:16 pm
Will setting the window transparency value be an available option?
November 16th, 2005 at 7:49 pm
omigosh I’m drooling…!!
November 17th, 2005 at 12:35 am
D2005 got a nice feature we’ve been waiting for in a long time. Viewable local values when traversing the callstack after a breakpoint. But this information was not available through hovering hints on variables in the sourcecode. Has this functionality been implemented into the hint now?
November 17th, 2005 at 2:25 am
This looks really nice. However, two features I’ve been missing much more lately is a lean standalone debugger and support for Microsoft’s debug symbols.
Installing Delphi on a production server is totally unrealistic, and even using the remote debugger can be problematic (requires network connection to the server).
One option that I would be very satisfied with would be to generate debug symbols in Microsoft format (pdb or whatever it is called) so I can use WinDbg. Of course I understand that that symbol format might not support all Delphi features but just getting a good stack backtrace of all threads usually helps a long way.
Another very nice thing with WinDbg is its ability to use Microsoft’s public symbol server so you get more meaningful backtraces when inside system DLLs.
Please add support for Microsoft’s debug symbols in some way. It would be really useful for hardcore debugging.
November 17th, 2005 at 4:25 am
Very nice….that was one of the few features of Visual Basic 6 that I have always missed in Delphi (of course pretty much everything has always been better :))
Good thing to have this!
November 17th, 2005 at 6:54 am
Hyperexcelent.
This is now, my killer feature #1 for use Delphi 2006!
I hope keep improving the debugging experience!
November 17th, 2005 at 10:11 am
Chris,
was this posting basically the gist of your (cancelled
) talk at BorCon?
Missed seeing ya there.
November 22nd, 2005 at 1:00 am
vero spettacolo…. –> spectacular
December 8th, 2005 at 3:14 pm
Borland Developer Studio 2006 is the best Delphi ever created. Thank you Borland for giving us the best development environment ever!
October 6th, 2009 at 5:49 am
[...] since Expandable Evaluation was added in the 2006 release, there has been a common complaint amongst Delphi and C++Builder [...]