Unix Man (Справочное руководство)


CTRACE(1) - часть 2


/p>

Следующие опции используются только в специальных случаях:

-lчисло_операторов Контролировать заданное число последовательно выполняемых операторов на предмет цикла трассировки, а не 20, как считается по умолчанию. Чтобы полностью трассировать циклы, используйте значение 0. -s Отменить ненужную трассировку простых операторов присваивания и вызовов функций копирования цепочек символов. Эта опция может скрыть ошибки, вызванные использованием операции = вместо ==. -tчисло_переменных Отслеживать заданное число_переменных для каждого оператора, а не 10, как по умолчанию (максимальным значением n является 20). В разделе ДИАГНОСТИКА об ясняется, когда нужно использовать эту опцию. -P Перед выполнением трассировщика запустить препроцессор языка C. Можно использовать также опции -D, -I и -U препроцессора .

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

-b Использовать для трассировки только базовые функции, то есть функции, описанные в статьях , и . Эти функции есть даже в кросскомпиляторах для микропроцессоров. Опция -b необходима, в частности, при выполнении трассируемых программ в операционной системе, в которой нет функций , , или . -pцепочка_символов Изменить подразумеваемое значение трассировочной функции печати printf(. Например, указание -p'fprintf(stderr,' приведет к тому, что отладочная печать пойдет в стандартный протокол. -rфайл Использовать файл вместо пакета функций трассировки runtime.c. Это позволяет полностью изменить функцию печати, а не только ее название и первые аргументы, как в случае опции -p.

ПРИМЕР


Пусть файл lc.c содержит следующую C-программу:

1 #include <stdio.h> 2 main() /* Подсчет числа вводимых строк */ 3 { 4 int c,nl; 5 6 nl = 0; 7 while ((c=getchar()) != EOF) 8 if (c = '\n') 9 ++nl; 10 printf ("%d\n",nl); 11}

и Вы вводите такие команды и тестовые данные:

cc lc.c a.out 1 CTRL+D

Программа будет откомпилирована и выполнена. Результатом работы программы будет число 2, но это неверный результат, так как тестовые данные содержат только одну строку. Ошибка в этой программе банальная, но коварная. Если Вы вызовете отладчик ctrace с помощью команд




Начало  Назад  Вперед