<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: RAD Studio 2010 Review #3: Debug Visualizers.</title>
	<atom:link href="http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/feed/" rel="self" type="application/rss+xml" />
	<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/</link>
	<description>...On the Wings of the Software Wind</description>
	<lastBuildDate>Mon, 15 Mar 2010 00:52:40 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Wings of Wind</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-911</link>
		<dc:creator>Wings of Wind</dc:creator>
		<pubDate>Wed, 23 Sep 2009 16:04:01 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-911</guid>
		<description>There are two kinds of visualizers:
- Replace: which changes the evaluated value with any &lt;em&gt;string&lt;/em&gt; of your choice. 
- Popup: Here you can display a visualizer which isn&#039;t evaluate to string. You can build a popup form which will show for example a color. Yes, of course, at some moment in time the color must be string (ie. $00A0BBFF) but this doesn&#039;t matter to much in our discussion.

Also, IIRC you can define a visualizer to act also for descendants.

HTH</description>
		<content:encoded><![CDATA[<p>There are two kinds of visualizers:<br />
- Replace: which changes the evaluated value with any <em>string</em> of your choice.<br />
- Popup: Here you can display a visualizer which isn&#8217;t evaluate to string. You can build a popup form which will show for example a color. Yes, of course, at some moment in time the color must be string (ie. $00A0BBFF) but this doesn&#8217;t matter to much in our discussion.</p>
<p>Also, IIRC you can define a visualizer to act also for descendants.</p>
<p>HTH</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Antonio</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-910</link>
		<dc:creator>Antonio</dc:creator>
		<pubDate>Wed, 23 Sep 2009 12:03:37 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-910</guid>
		<description>To anwser to myself, Debug Visualizers are siriusly limited in this version, It&#039;s not possible to get any value form debugger other than string. This means visualisers are possible ONLY for objects / types that can evaluate to string. And Visualizers only work for current class not for descendants, eg. If I declare 

TMyStringList = class(TStringList); 

for objects of type TMyStringList the loupe icon will NOT be shown and TStringList visualizer won&#039;t work for this class.

Let&#039;s hope that this would be better in the next version.</description>
		<content:encoded><![CDATA[<p>To anwser to myself, Debug Visualizers are siriusly limited in this version, It&#8217;s not possible to get any value form debugger other than string. This means visualisers are possible ONLY for objects / types that can evaluate to string. And Visualizers only work for current class not for descendants, eg. If I declare </p>
<p>TMyStringList = class(TStringList); </p>
<p>for objects of type TMyStringList the loupe icon will NOT be shown and TStringList visualizer won&#8217;t work for this class.</p>
<p>Let&#8217;s hope that this would be better in the next version.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Antonio</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-824</link>
		<dc:creator>Antonio</dc:creator>
		<pubDate>Fri, 18 Sep 2009 11:11:36 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-824</guid>
		<description>I am trying to make debugger Visualizer for Dataset classes for Delphi 2010, using StringListVisualizer as a reference, but I can&#039;t get 
viewed object with IOTAThread.Evaluate.

I tried casting  value returned from Evaluate in ResultAddr to TDataset but that is not working, in variable Exppresion is dataset variable 
name and EvalRes is returne as erOK, but when I try to use Result access violation occures.

Is this possible ? I mean is it possible to get real live object with IOTAThread.Evaluate not just a string like StringList Visualizer does.

Here is the code (this is a slightly modified code from StringList visualizer) :

function TDatasetViewerFrame.GetDataset(Expression: string): TDataset;
var
  CurProcess: IOTAProcess;
  CurThread: IOTAThread;
  ResultStr: array[0..4095] of Char;
  CanModify: Boolean;
  ResultAddr, ResultSize, ResultVal: LongWord;
  EvalRes: TOTAEvaluateResult;
  DebugSvcs: IOTADebuggerServices;
begin
  begin
    Result := nil;
    if Supports(BorlandIDEServices, IOTADebuggerServices, DebugSvcs) then
      CurProcess := DebugSvcs.CurrentProcess;

    if CurProcess  nil then 
    begin
      CurThread := CurProcess.CurrentThread;
      if CurThread  nil then 
      begin
        EvalRes := CurThread.Evaluate(Expression, @ResultStr, Length(ResultStr), CanModify, eseAll, &#039;&#039;, ResultAddr, ResultSize, ResultVal, 
&#039;&#039;, 0);

        case EvalRes of
          erOK:
            Result := TDataset(ResultAddr);  // Result is shown as Inaccessible value in debugger

... cut</description>
		<content:encoded><![CDATA[<p>I am trying to make debugger Visualizer for Dataset classes for Delphi 2010, using StringListVisualizer as a reference, but I can&#8217;t get<br />
viewed object with IOTAThread.Evaluate.</p>
<p>I tried casting  value returned from Evaluate in ResultAddr to TDataset but that is not working, in variable Exppresion is dataset variable<br />
name and EvalRes is returne as erOK, but when I try to use Result access violation occures.</p>
<p>Is this possible ? I mean is it possible to get real live object with IOTAThread.Evaluate not just a string like StringList Visualizer does.</p>
<p>Here is the code (this is a slightly modified code from StringList visualizer) :</p>
<p>function TDatasetViewerFrame.GetDataset(Expression: string): TDataset;<br />
var<br />
  CurProcess: IOTAProcess;<br />
  CurThread: IOTAThread;<br />
  ResultStr: array[0..4095] of Char;<br />
  CanModify: Boolean;<br />
  ResultAddr, ResultSize, ResultVal: LongWord;<br />
  EvalRes: TOTAEvaluateResult;<br />
  DebugSvcs: IOTADebuggerServices;<br />
begin<br />
  begin<br />
    Result := nil;<br />
    if Supports(BorlandIDEServices, IOTADebuggerServices, DebugSvcs) then<br />
      CurProcess := DebugSvcs.CurrentProcess;</p>
<p>    if CurProcess  nil then<br />
    begin<br />
      CurThread := CurProcess.CurrentThread;<br />
      if CurThread  nil then<br />
      begin<br />
        EvalRes := CurThread.Evaluate(Expression, @ResultStr, Length(ResultStr), CanModify, eseAll, &#8221;, ResultAddr, ResultSize, ResultVal,<br />
&#8221;, 0);</p>
<p>        case EvalRes of<br />
          erOK:<br />
            Result := TDataset(ResultAddr);  // Result is shown as Inaccessible value in debugger</p>
<p>&#8230; cut</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paweł Głowacki : RAD Studio 2010 - Object Inspector "verbs" area</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-328</link>
		<dc:creator>Paweł Głowacki : RAD Studio 2010 - Object Inspector "verbs" area</dc:creator>
		<pubDate>Fri, 28 Aug 2009 17:55:49 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-328</guid>
		<description>[...] countless new IDE usability features like IDE Insight, source code formatter, thread debugging, debug visualizers, new Open Tools API and [...]</description>
		<content:encoded><![CDATA[<p>[...] countless new IDE usability features like IDE Insight, source code formatter, thread debugging, debug visualizers, new Open Tools API and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Личная записная</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-275</link>
		<dc:creator>Личная записная</dc:creator>
		<pubDate>Tue, 25 Aug 2009 21:32:47 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-275</guid>
		<description>[...] Визуализаторы информации в отладочном режиме - позволяют дебажить код с большим комфортом :). Описание можно найти на тех же &#8220;Крыльях ветра&#8221;; [...]</description>
		<content:encoded><![CDATA[<p>[...] Визуализаторы информации в отладочном режиме &#8211; позволяют дебажить код с большим комфортом <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Описание можно найти на тех же &#8220;Крыльях ветра&#8221;; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christian Wimmer</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-106</link>
		<dc:creator>Christian Wimmer</dc:creator>
		<pubDate>Mon, 10 Aug 2009 22:36:48 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-106</guid>
		<description>This is a great feature and makes a debug-only variable obsolete. I add a string variable to each of my many and complex classes, this variable contains a formatted string with all properties as text values. Because it is a simple string variable it can be viewed in the debugger. But of course other variable types are not observable in this way.
I hope this feature is tested well and made easy to use because I don&#039;t want to have side effects in my code due to the extra source overhead. Consider a bug in the application itself that only appears in debugging mode because of this feature. Horror.</description>
		<content:encoded><![CDATA[<p>This is a great feature and makes a debug-only variable obsolete. I add a string variable to each of my many and complex classes, this variable contains a formatted string with all properties as text values. Because it is a simple string variable it can be viewed in the debugger. But of course other variable types are not observable in this way.<br />
I hope this feature is tested well and made easy to use because I don&#8217;t want to have side effects in my code due to the extra source overhead. Consider a bug in the application itself that only appears in debugging mode because of this feature. Horror.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Heinz Z.</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-56</link>
		<dc:creator>Heinz Z.</dc:creator>
		<pubDate>Fri, 07 Aug 2009 08:37:53 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-56</guid>
		<description>At first Visualizers are good stuff, thanks. The times when I am speculate what datetime 40032,436849 means are ending. :-)

When there is only one Popup Visualizers, please open it directly, because everybody will hate to choose one visualizer from list with one entry.  That is nothing.  Check this out. I define a default Popup Visualizer which is open when I click the icon and from this view I can choose one of the others.</description>
		<content:encoded><![CDATA[<p>At first Visualizers are good stuff, thanks. The times when I am speculate what datetime 40032,436849 means are ending. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>When there is only one Popup Visualizers, please open it directly, because everybody will hate to choose one visualizer from list with one entry.  That is nothing.  Check this out. I define a default Popup Visualizer which is open when I click the icon and from this view I can choose one of the others.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: A. Vrbic</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-54</link>
		<dc:creator>A. Vrbic</dc:creator>
		<pubDate>Thu, 06 Aug 2009 21:32:13 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-54</guid>
		<description>I agree. Additionally, as Delphi compiler is lightning fast - it&#039;s not such a PITA to recompile app when required.</description>
		<content:encoded><![CDATA[<p>I agree. Additionally, as Delphi compiler is lightning fast &#8211; it&#8217;s not such a PITA to recompile app when required.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rif</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-52</link>
		<dc:creator>Rif</dc:creator>
		<pubDate>Thu, 06 Aug 2009 18:57:02 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-52</guid>
		<description>@Paolo Biondi
Let me try to understand what you want. During the debugging of your program you realise that some calculation is wrong. So you fix the calculation so the rest of the calculations can run right. But after changing the calculation/behaviour of the program I  would want to no longer continue with the results of the bad calculations - so I would restart the program.

I find that it is very rare cases that you can accept that your program has changed during its execution. You could never reproduce such a run.

In short, I see little value from such a feature, but lots of complexity with it.</description>
		<content:encoded><![CDATA[<p>@Paolo Biondi<br />
Let me try to understand what you want. During the debugging of your program you realise that some calculation is wrong. So you fix the calculation so the rest of the calculations can run right. But after changing the calculation/behaviour of the program I  would want to no longer continue with the results of the bad calculations &#8211; so I would restart the program.</p>
<p>I find that it is very rare cases that you can accept that your program has changed during its execution. You could never reproduce such a run.</p>
<p>In short, I see little value from such a feature, but lots of complexity with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce McGee</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-48</link>
		<dc:creator>Bruce McGee</dc:creator>
		<pubDate>Thu, 06 Aug 2009 16:52:44 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-48</guid>
		<description>That&#039;s what I&#039;m kind of asking.  Is it possible to combine an inline visualizer that I write myself with the existing popup one.</description>
		<content:encoded><![CDATA[<p>That&#8217;s what I&#8217;m kind of asking.  Is it possible to combine an inline visualizer that I write myself with the existing popup one.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wings of Wind</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-47</link>
		<dc:creator>Wings of Wind</dc:creator>
		<pubDate>Thu, 06 Aug 2009 16:25:14 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-47</guid>
		<description>For this release, there is no inline visualizer for TStrings. Fortunately, writing such a visualizer is somewhat &#039;doable&#039;... :-)

Also, I want to stress that I agree with your comments.</description>
		<content:encoded><![CDATA[<p>For this release, there is no inline visualizer for TStrings. Fortunately, writing such a visualizer is somewhat &#8216;doable&#8217;&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Also, I want to stress that I agree with your comments.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce McGee</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-45</link>
		<dc:creator>Bruce McGee</dc:creator>
		<pubDate>Thu, 06 Aug 2009 14:50:46 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-45</guid>
		<description>If they don&#039;t, you can always use the source code examples they will be including to write your own.</description>
		<content:encoded><![CDATA[<p>If they don&#8217;t, you can always use the source code examples they will be including to write your own.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce McGee</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-43</link>
		<dc:creator>Bruce McGee</dc:creator>
		<pubDate>Thu, 06 Aug 2009 14:47:31 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-43</guid>
		<description>I like this a lot.

The inline display for TStringList is a little sparse.  Do you know if a type have both an inline and popup visualizer?  It might be nice to show how many elements there are at a glance and still have the popup for details.</description>
		<content:encoded><![CDATA[<p>I like this a lot.</p>
<p>The inline display for TStringList is a little sparse.  Do you know if a type have both an inline and popup visualizer?  It might be nice to show how many elements there are at a glance and still have the popup for details.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lds</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-41</link>
		<dc:creator>lds</dc:creator>
		<pubDate>Thu, 06 Aug 2009 14:42:36 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-41</guid>
		<description>Actually I think something could be done with native compiled code too, the debugger could &quot;patch&quot; the in-memory imege of the executable placing a jmp instruction or the like and point it to the new compiled code adding the instruction to return to normal flow - of course I guess using a VM is much easier.</description>
		<content:encoded><![CDATA[<p>Actually I think something could be done with native compiled code too, the debugger could &#8220;patch&#8221; the in-memory imege of the executable placing a jmp instruction or the like and point it to the new compiled code adding the instruction to return to normal flow &#8211; of course I guess using a VM is much easier.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xepol</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-36</link>
		<dc:creator>Xepol</dc:creator>
		<pubDate>Thu, 06 Aug 2009 11:38:31 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-36</guid>
		<description>Hopefully they decide to add a few visualizers for basic graphics formats supported by the IDE as well - Not a really hard thing to do.</description>
		<content:encoded><![CDATA[<p>Hopefully they decide to add a few visualizers for basic graphics formats supported by the IDE as well &#8211; Not a really hard thing to do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paolo Biondi</title>
		<link>http://wings-of-wind.com/2009/08/06/rad-studio-2010-review-3-debug-visualizers/comment-page-1/#comment-35</link>
		<dc:creator>Paolo Biondi</dc:creator>
		<pubDate>Thu, 06 Aug 2009 10:47:21 +0000</pubDate>
		<guid isPermaLink="false">http://windwings.wordpress.com/?p=50#comment-35</guid>
		<description>I work a lot with Netbeans and a very useful feature is the ability to change a statement while debugging and to execute the new code without having to recompile all the code, but maybe it&#039;s something limited to VM and JIT.</description>
		<content:encoded><![CDATA[<p>I work a lot with Netbeans and a very useful feature is the ability to change a statement while debugging and to execute the new code without having to recompile all the code, but maybe it&#8217;s something limited to VM and JIT.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
