如何增加外部调试器可视化工具可以显示的字符串大小?

Car*_*sen 13 delphi debuggervisualizer delphi-2010 delphi-xe delphi-xe2

我再次编写了一个外部调试器可视化工具,并且遇到了问题.调试器可视化工具可以返回的字符串大小似乎有限制.

Delphi 2010附带的TStrings调试器可视化器的限制为4K.在对Embarcadero新闻组发布的问题的回复中,Ewe Schuster 回答说"你可以稍微增加缓冲区,但AFAIR的实际限制是IOTAThread.Evaluate,限制大约12k字符."

我的调试器可视化器基于TStrings调试器可视化器的代码,我可以看到TFrame的Evaluate方法的实现包括ResultStr的以下声明,该声明用于返回从IOTAThread.Evaluate调用返回的字符串:

  ResultStr: array[0..4095] of Char;
Run Code Online (Sandbox Code Playgroud)

我曾希望增加这个缓冲区的大小会有所帮助,但没有运气.

如果有的话,我可以做些什么来增加外部调试器可视化工具可以显示的字符串的大小?

Fra*_*ois 11

我对该限制有相同的耐心...所以我做了一个调试可视化工具,主要通过在调试过程中创建一个MemoryStream来保存Expression的字符串结果,然后使用像

CurProcess.ReadProcessMemory(StrToInt(SrcMemoryAddr), DstMemStream.Size, DstMemStream.Memory^);
Run Code Online (Sandbox Code Playgroud)

将其复制到可视化工具的MemoryStream中.然后你可以做任何你想要显示它的东西(比如将它格式化为人类阅读,如果它是一个像CLientDataSet.XMLData这样的XML字符串).

如果Expression是一个const字符串,一个var,或需要评估等,几乎没有什么技巧...

我的FGStringVisualizer不是100%令人满意,这就是为什么我还没有在我的博客上发布它,但因为它占我所需要的99%,我没有花时间来清理它并发布它甚至"按原样".但是,如果有需要,我当然可以用所有必需的免责声明做到这一点......

更新:这与我在最后一个DelphiLive中提供的FGStringListVisualizer使用的想法相同.顺便说一句,这个也可能值得我放在我的博客上,因为我做了一些改进.