В этой статье:

Общие сведения

Описание

Отладочная печать в Fore.NET

Пример Fore

Пример Fore.NET

Отладочная печать

Номер статьи: KB000003

Общие сведения

Связанные блоки:

Описание

В системной сборке System имеется класс Debug, предназначенный для вывода отладочной информации при выполнении модулей или форм. Данный класс имеет несколько статических методов, решающих разные задачи:

Метод Assert позволяет вставить в код условие для проверки внутреннего состояния исполняемого кода. Если код не соответствует заданному условию, то выводится сообщение об этом. Часто разработчики пишут код процедур или функций исходя из некоторых предположений о значениях их параметров. Данный метод позволяет включить в код проверку этих предположений и уже на этапе тестирования системы выявить проблемы, если они реально существуют.

Метод Fail позволяет безусловно сообщить о какой-то серьезной проблеме, возникшей при выполнении кода.

Разработчики часто используют функцию IWinApplicationClass.InformationBox для вывода отладочных сообщений. Её использование может привести к неработоспособности прикладной системы в веб-версии. Рекомендуется учитывать и этот фактор при разработке прикладных систем.

Отладочная печать в Fore.NET

Для вывода отладочных сообщений при работе .NET-сборки среда разработки была доработана таким образом, чтобы можно было использовать свойства и методы класса Debug из пространства имен System.Diagnostics (сборка System.dll). Свойства и методы класса Debug из Fore-сборки System в Fore.NET не поддерживается.

Назначение всех свойств и методов указанных классов практически аналогичное, отличие имеют методы Assert и Fail: данные методы класса System.Diagnostics.Debug кроме заданных сообщений также выводят информацию о стеке вызова). Описание всех перегруженных методов класса System.Diagnostics.Debug доступно в MSDN.

Пример Fore

Sub UserProc;
Var
    Value: Double;
Begin
    Debug.WriteLine("Hello, world!");
    Value := Math.Rand;
    Debug.Write("Random value: "); Debug.WriteLine(Value);
    Debug.WriteLineIf(Value > 0.5"Random value is greater than 0.5");
    Debug.WriteLine("Indented random outputs");
    Debug.Indent;
    Try
        Debug.WriteLine(Math.Rand);
        Debug.WriteLine(Math.RandBetween(0100));
    Finally
        Debug.Unindent;
    End Try;
    Debug.Assert(Math.Rand > 0.5);
    Debug.Fail("There is an serious failure in software");
End Sub UserProc;

В окно консоли будет выведено:

Выполнение модуля начато

Hello, world!

Random value: 0,175467571750159

Indented random outputs

    0,64320357647799

    11,6849231109221

Assert failed

There is an serious failure in software

Выполнение модуля завершено

Пример Fore.NET

Для выполнения примера подключите .NET-сборки System и mscorlib. Пример, аналогичный примеру на Fore, будет выглядеть следующим образом:

Imports System;
Imports System.Diagnostics;

Public Shared Sub Main(Params: StartParams);
Var
    Rnd: Random = New Random();
    Value: Double;
Begin
    Debug.WriteLine("Hello, world!");
    Value := Rnd.NextDouble();
    Debug.Write("Random value: "); Debug.WriteLine(Value);
    Debug.WriteLineIf(Value > 0.5"Random value is greater than 0.5");
    Debug.WriteLine("Indented random outputs");
    Debug.Indent();
    Try
        Debug.WriteLine(Rnd.NextDouble());
        Debug.WriteLine(Rnd.Next(0100));
    Finally
        Debug.Unindent();
    End Try;
    Debug.Assert(Rnd.NextDouble() > 0.5"Значение меньше 0.5");
    Debug.Fail("There is an serious failure in software");
End Sub;

В окно консоли будет выведено:

Hello, world!

Random value: 0,52850199561962

Random value is greater than 0.5

Indented random outputs

    0,832817622382575

    95

---- DEBUG ASSERTION FAILED ----

---- Assert Short Message ----

Значение меньше 0.5

---- Assert Long Message ----

    ...Далее идет стек вызова...  

---- DEBUG ASSERTION FAILED ----

---- Assert Short Message ----

There is an serious failure in software

---- Assert Long Message ----

    ...Далее идет стек вызова...

См. также:

База знаний разработчиков