Cobra/Keywords/trace
Trace
[править]trace используется при трассировке выполнения кода.
Показывает трассировки для:
- точки выполнения
- выражение или списка выражения
- все аргументов и переменных, доступных в текущем методе
Можно включить или отключить последующую трассировку.
Трассировка выражения или списка выражений в отличие от печати одного и того же выражения:
- Формат отображения; trace генерирует expression-text = expression-value для каждого выражения
- Информация о позиции (имя файла, номер строки, декларация классов и методов)
- Трассировка может быть отключена параметром при сборке
cobra -include-traces:no ...
Трассировка полезна для отладки (для отображения промежуточных значений выражения) и регистрации контрольных точек (например, о том, что код в блоке кода выполняется).
Использование trace без аргументов, выводит только о текущей позиции - имя файла, номер строки, декларации класса и метода. Если класс текущего объекта является подклассом объявленного класса, то выводится имя подкласса.
Когда было получено одно или несколько выражений, trace выводит ту же информацию, а также исходный код и значение каждого выражения.
trace all выражение используется для удобства регистрации
- текущей позиции,
- каждого аргумента метода
- каждой локальной переменной.
trace off выражение выключает последующие trace в объявлении метода.
trace on выражение включает их обратно.
Синтаксис
[править]
trace
trace <expr1>, <expr2>, ... <expr3>
trace all
trace off
trace on
Пример
[править]
class Foo
var _z as int
def computeStuff(x as int, y as int)
if x > y
trace
return
_z = x * y
trace all
trace _z
trace: at Foo.cobra:7; in Foo.computeStuff
trace: this=Foo; x=4; y=2; at Foo.cobra:10; in Foo.computeStuff
trace: this=Foo; _z=8; at Foo.cobra:11; in Foo.computeStuff