Функцию трассировки можно запустить из программы с помощью функции trcstart(), которая расположена в библиотеке librts.a. Ниже описан синтаксис функции trcstart():
int trcstart(char *args)
где args - это список параметров для команды trace. По умолчанию запускается трассировка системных событий (канал 0). Для запуска трассировки общего назначения укажите в строке параметров args опцию -g. После успешного завершения функция trcstart() возвратит ИД канала. Для трассировки общего назначения с помощью данного ИД канала можно записывать частный канал общего назначения.
При компиляции программы с помощью этой функции необходимо отдельно отправить запрос на ссылку на библиотекуlibrts.a (в качестве опции компиляции укажите -l rts).
Процедурой trace можно управлять с помощью вызова функций из библиотеки librts.a. При успешном завершении функции возвращают 0. Список функций:
При вызове каждой из перечисленных выше фунций управления трассировкой выполняются следующие действия:
Для более оптимального включения и выключения трассировки для отдельных разделов кода можно отправлять вызовы ioctl() непосредственно. Это позволит избежать многократных открытий и закрытий устройства управления трассировкой. Для применения интерфейса ioctl() в программе включите библиотеку sys/trcctl.h для того чтобы определить команды ioctl(). Ниже описан синтаксис функции ioctl():
ioctl (fd, CMD, канал)
где:
В приведенном ниже примере показано, как включить трассировку только для определенного участка кода:
#include <fcntl.h>
#include <sys/trcctl.h>
extern int trcstart(char *arg);
char *ctl_dev ="/dev/systrctl";
int ctl_fd;
main()
{
     printf("настройка процедуры трассировки \n");
     if (trcstart("-ad")){
         perror("trcstart");
         exit(1);
     }
 
     printf("открытие устройства трассировки \n");
     if((ctl_fd =open (ctl_dev,O_RDWR))<0){
         perror("open ctl_dev");
         exit(1);
     }
 
     printf("включение трассировки \n");
     if(ioctl(ctl_fd,TRCON,0)){
         perror("TRCON");
         exit(1);
     }
 
     /* *** эта строка будет трассироваться *** */
     printf("Код, выводящий эту строку, будет трассироваться.");
 
     printf("выключение трассировки \n");
     if (ioctl(ctl_fd,TRCOFF,0)){
         perror("TRCOFF");
         exit(1);
     }
 
     printf("останов системы трассировки \n");
     if (trcstop(0)){
         perror("trcstop");
         exit(1);
     }
 
     exit(0);
}
Поскольку в качестве параметра функции trcstart() не был задан файл вывода, вывод трассировки помещается в файл /var/adm/ras/trcfile, который также является файлом ввода по умолчанию для команды trcrpt.