0

我将 SysInternals DebugView 与我的 .Net 应用程序一起使用。我尝试使用 .Net Debug 类的 Indent 功能,但 DebugView 似乎只是将其表示为 NewLine 字符。

有谁知道是否可以让 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

正文如下:

默认情况下,强制回车选项处于启用状态,该选项将传递给调试输出函数的每个字符串显示在单独的行上,无论该文本是否以回车结束。如果您在“选项”菜单中禁用该选项,DebugView 会在内存中缓冲输出文本,并仅在遇到回车或内存缓冲区已填满(大约 4192 个字符)时将其添加到显示中。这允许应用程序和驱动程序通过多次调用调试输出函数来构建输出行。

于 2011-10-10T08:22:08.460 回答
1

我不认为你可以让 DebugView 这样做。它捕获单独的输出写入,因此当您执行Debug.WriteLineDebug 类时,似乎将缩进空间单独作为单独的OutputDebugString调用输出。您绝对仍然可以做的是自己添加缩进空间并将您的写入映射到单个底层 API 调用:

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