如何让SysInternals DebugView显示缩进?

时间:2011-10-07 11:14:47

标签: .net sysinternals debugview

我在我的.Net应用程序中使用SysInternals DebugView。我尝试使用.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

里克多维

2 个答案:

答案 0 :(得分:2)

但是等等!看起来有可能。您只需要选项菜单关闭 强制回车功能。

我在这里找到了答案: http://forum.sysinternals.com/topic26797_post131196.html#131196

以下是文字:

  

默认情况下,启用“强制回车”选项,该选项显示传递的每个字符串   在单独的行上调试输出函数,无论该文本是否以a终止   回车。如果在“选项”菜单中禁用该选项,则DebugView将缓冲输出   内存中的文本,只有在遇到回车符时才将其添加到显示器中   内存缓冲区已填满(大约4192个字符)。这允许应用程序和驱动程序   构建具有多个调试输出函数调用的输出行。

答案 1 :(得分:1)

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

string currentIndent = "  ";
// ...
Debug.WriteLine(currentIndent + "Indent level: {0}", Debug.IndentLevel);