Практическое руководство. Добавление операторов трассировки в код приложения

Методы, наиболее часто используемые для отслеживания, — это методы для записи выходных данных в прослушиватели: Write, WriteIf, WriteLine, WriteLineIf, Assert и Fail. Эти методы можно разделить на две категории: Write, WriteLine и Fail выдают выходные данные безусловно, в то время как методы WriteIf, WriteLineIf и Assert тестируют условие Boolean и выполняют или не выполняют запись в зависимости от значения условия. WriteIf и WriteLineIf выдают выходные данные, если условие равно true, а Assert выдает выходные данные, если условие равно false.

При разработке своей стратегии трассировки и отладки следует подумать о способе представления вывода. При наличии нескольких операторов Write, заполненных несвязанными данными, получается сложный для чтения журнал. С другой стороны, при использовании метода WriteLine для размещения связанных операторов на разных строках может быть сложно понять, какие сведения связаны друг с другом. Как правило, при использовании нескольких операторов Write имеет смысл объединить информацию из разных источников для создания единого информационного сообщения и использовать оператор WriteLine для создания единого полного сообщения.

Запись полной строки

  1. Вызовите метод WriteLine или WriteLineIf.

    Символ возврата каретки добавляется в конец сообщения, возвращаемого этим методом, чтобы следующее сообщение, возвращаемое методом Write, WriteIf, WriteLine или WriteLineIf, начиналось со следующей строки:

    Dim errorFlag As Boolean = False  
    Trace.WriteLine("Error in AppendData procedure.")  
    Trace.WriteLineIf(errorFlag, "Error in AppendData procedure.")  
    
    bool errorFlag = false;  
    System.Diagnostics.Trace.WriteLine ("Error in AppendData procedure.");  
    System.Diagnostics.Trace.WriteLineIf(errorFlag,
       "Error in AppendData procedure.");  
    

Запись частичной строки

  1. Вызовите метод Write или WriteIf.

    Следующее сообщение, выдаваемое оператором Write, WriteIf, WriteLine или WriteLineIf, начинается на той же строке, что и сообщение, выданное оператором Write или WriteIf:

    Dim errorFlag As Boolean = False  
    Trace.WriteIf(errorFlag, "Error in AppendData procedure.")  
    Debug.WriteIf(errorFlag, "Transaction abandoned.")  
    Trace.Write("Invalid value for data request")  
    
    bool errorFlag = false;  
    System.Diagnostics.Trace.WriteIf(errorFlag,
       "Error in AppendData procedure.");  
    System.Diagnostics.Debug.WriteIf(errorFlag, "Transaction abandoned.");  
    Trace.Write("Invalid value for data request");  
    

Проверка наличия определенного условия до или после выполнения метода

  1. Вызовите метод Assert .

    Dim i As Integer = 4  
    Trace.Assert(i = 5, "i is not equal to 5.")  
    
    int i = 4;  
    System.Diagnostics.Trace.Assert(i == 5, "i is not equal to 5.");  
    

    Примечание.

    Оператор Assert можно использовать и для отладки, и для трассировки. В этом примере стек вызовов выводится в любой прослушиватель в коллекции Listeners. Дополнительные сведения см. в разделах Утверждения в управляемом коде и Debug.Assert.

См. также