0

.NetアプリケーションでSysInternalsDebugViewを使用しています。.Net Debugクラスのインデント機能を使用してみましたが、DebugViewはこれを改行文字として表しているようです。

DebugViewにインデントを表示させることが可能かどうか誰かが知っていますか?

サンプルコード:

static void Main (string[] args)
{
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);

    Debug.Indent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);
    Debug.Indent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);
    Debug.Indent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);

    Debug.Unindent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);
    Debug.Unindent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);
    Debug.Unindent();
    Debug.WriteLine("Indent level: {0}", Debug.IndentLevel);
}

出力:

[9632] Indent level: 0
[9632]
[9632] Indent level: 1
[9632]
[9632]
[9632] Indent level: 2
[9632]
[9632]
[9632]
[9632] Indent level: 3
[9632]
[9632]
[9632] Indent level: 2
[9632]
[9632] Indent level: 1
[9632] Indent level: 0

私が見たいもの:

[9632] Indent level: 0
[9632]   Indent level: 1
[9632]     Indent level: 2
[9632]       Indent level: 3
[9632]     Indent level: 2
[9632]   Indent level: 1
[9632] Indent level: 0

リック

4

2 に答える 2

2

ちょっと待って!可能のようです。[オプション] メニューの [キャリッジ リターンの強制]機能をオフにするだけです。

ここで答えを見つけました: http://forum.sysinternals.com/topic26797_post131196.html#131196

テキストは次のとおりです。

デフォルトでは、Force Carriage Returns オプションが有効になっており、テキストがキャリッジ リターンで終了しているかどうかに関係なく、デバッグ出力関数に渡されたすべての文字列が別の行に表示されます。[オプション] メニューでそのオプションを無効にすると、DebugView は出力テキストをメモリにバッファリングし、キャリッジ リターンが検出されるか、メモリ バッファがいっぱいになった場合 (約 4192 文字) にのみ表示に追加します。これにより、アプリケーションとドライバーは、デバッグ出力関数を複数回呼び出して出力行を作成できます。

于 2011-10-10T08:22:08.460 に答える
1

DebugView をこのようにすることはできないと思います。個々の出力書き込みをキャプチャするため、 Debug クラスを実行すると、個別の呼び出しDebug.WriteLineとして個別にインデント スペースが出力されるようです。OutputDebugStringまだ確実にできることは、自分でインデント スペースを追加し、書き込みを単一の基になる API 呼び出しにマップすることです。

string currentIndent = "  ";
// ...
Debug.WriteLine(currentIndent + "Indent level: {0}", Debug.IndentLevel);
于 2011-10-07T11:41:00.943 に答える