15

私はもう一度外部デバッガビジュアライザーを作成していて、壁にぶつかっています。デバッガビジュアライザが返すことができる文字列のサイズには制限があるようです。

Delphi 2010に同梱されているTStringsデバッガビジュアライザーには、4Kの制限がありました。Embarcaderoのニュースグループに投稿された質問への回答で、Ewe Schusterは、「バッファを少し増やすことはできますが、実際の制限はIOTAThreadにあります。約12k文字の制限で評価してください」と回答しました。

私のデバッガービジュアライザーはTStringsデバッガービジュアライザーのコードに基づいており、TFrameのEvaluateメソッドの実装には、IOTAThread.Evaluate呼び出しから返された文字列を返すために使用されるResultStrの次の宣言が含まれていることがわかります。

  ResultStr: array[0..4095] of Char;

このバッファのサイズを大きくすると役立つことを期待していましたが、うまくいきませんでした。

外部デバッガビジュアライザーが表示できる文字列のサイズを大きくするには、どうすればよいですか?

4

1 に答える 1

12

私はその制限に対して同じ制限された忍耐力を持っていました...そこで私は、式の文字列結果を保持するためにデバッグされたプロセスでMemoryStreamを作成することによって制限を回避するデバッグビジュアライザーを作成し、次のようなものを使用します

CurProcess.ReadProcessMemory(StrToInt(SrcMemoryAddr), DstMemStream.Size, DstMemStream.Memory^);

ビジュアライザーのMemoryStreamにコピーします。次に、表示したいことを何でも行うことができます(たとえば、CLientDataSet.XMLDataのようなXML文字列の場合は、人間が読めるようにフォーマットします)。

式がconst文字列であるか、varであるか、評価が必要かなどに応じて、いくつかのトリックがあります。

私のFGStringVisualizerは100%満足できるものではないため、ブログにまだ公開していませんが、必要なものの99%を実行しているため、少し時間をかけてクリーンアップして公開することもありませんでした。そのまま"。しかし、必要があれば、私は確かに必要なすべての免責事項でそれを行うことができます...

更新:前回のDelphiLiveで提示したFGStringListVisualizerに使用したのと同じアイデアです。ちなみに、それ以来、いくつかの改善を行ったので、これも私のブログに載せる価値があるかもしれません。

于 2012-03-01T18:11:52.680 に答える