Как получить SysInternals DebugView для отображения отступов? - PullRequest
0 голосов
/ 07 октября 2011

Я использую SysInternals DebugView с моим приложением .Net.Я пытался использовать функцию Indent класса .Net Debug, но кажется, что 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 ]

2 голосов
/ 10 октября 2011

Но подождите!Похоже, это возможно.Вам просто нужно отключить Принудительный возврат каретки в меню Опции .

Я нашел ответ здесь: http://forum.sysinternals.com/topic26797_post131196.html#131196

Вот текст:

По умолчанию включена опция принудительного возврата каретки, которая отображает каждую строку, переданную в функцию вывода отладки, в отдельной строке, независимо от того, является ли этот текстпрекращается с возвратом каретки.Если вы отключите эту опцию в меню «Параметры», DebugView буферизует выходной текст в памяти и добавляет его на экран только при обнаружении возврата каретки или заполнении буфера памяти (приблизительно 4192 символов).Это позволяет приложениям и драйверам создавать выходные строки с несколькими вызовами отладочных выходных функций.

1 голос
/ 07 октября 2011

Я не думаю, что вы можете заставить DebugView делать так. Он фиксирует отдельные записи вывода, поэтому кажется, что когда вы делаете Debug.WriteLine Класс отладки, выводит пространство отступов отдельно как отдельные вызовы OutputDebugString. Что вы определенно еще можете сделать, так это самостоятельно добавить пространство отступов и сопоставить записи в отдельные вызовы API:

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