Практическое руководство. Добавление операторов трассировки в код приложения
Примечание.
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
Методы, наиболее часто используемые для отслеживания, — это методы для записи выходных данных в прослушиватели: Write, WriteIf, WriteLine, WriteLineIf, Assert и Fail. Эти методы можно разделить на две категории: Write, WriteLine и Fail выдают выходные данные безусловно, в то время как методы WriteIf, WriteLineIf и Assert тестируют условие Boolean и выполняют или не выполняют запись в зависимости от значения условия. WriteIf и WriteLineIf выдают выходные данные, если условие равно true
, а Assert выдает выходные данные, если условие равно false
.
При разработке своей стратегии трассировки и отладки следует подумать о способе представления вывода. При наличии нескольких операторов Write, заполненных несвязанными данными, получается сложный для чтения журнал. С другой стороны, при использовании метода WriteLine для размещения связанных операторов на разных строках может быть сложно понять, какие сведения связаны друг с другом. Как правило, при использовании нескольких операторов Write имеет смысл объединить информацию из разных источников для создания единого информационного сообщения и использовать оператор WriteLine для создания единого полного сообщения.
Запись полной строки
Вызовите метод 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.");
Запись частичной строки
Вызовите метод 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");
Проверка наличия определенного условия до или после выполнения метода
Вызовите метод 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.