Установка или удаление точек остановки, которыми владеет отлаживаемый процесс
#include <sys/debug.h>#include <sys/procfs.h>#define DCMD_PROC_BREAK __DIOTF( _DCMD_PROC, __PROC_SUBCMD_PROCFS + 14, procfs_break )
/proc/PID/as
). Файл должен быть открыт для записи.DCMD_PROC_BREAK
.NULL
.Команда используется в сочетании с вызовом devctl(), а все перечисленные аргументы являются его типовыми параметрами. Команда позволяет установить или удалить точку остановки в отлаживаемом процессе, ассоциированном с filedes.
Точки остановки, отличные от _DEBUG_BREAK_EXEC, сильно зависят от аппаратного обеспечения и архитектуры системы. Во многих архитектурах иные типы точек остановки приводят к необходимости пошаговой отладки со стороны ядра. При этом покомандно исполняемый код приводит к крайне медленному исполнению.
Заполненная структура procfs_break. Поле size следует установить в 0
при установке и в -1
при удалении точки остановки.
Исходная или модифицированная структура procfs_break. Если микроядро не может установить требуемый тип точки остановки, будет предпринята попытка установить иной тип. Параметры фактически установленной точки установки будут возвращены при выполнении данной команды.
procfs_break brk;memset( &brk, 0, sizeof( brk ) );brk.type = _DEBUG_BREAK_EXEC;brk.addr = acc->break_addr.offset;brk.size = 0;devctl( fd, DCMD_PROC_BREAK, &brk, sizeof( brk ), 0 );
pthread_join(), MsgReply(), InterruptWait(), MsgDeliverEvent(), MsgReceive(), MsgSend(), MsgSendPulse(), nanosleep(), procfs_break, pthread_cancel(), pthread_cond_wait(), pthread_create(), pthread_exit(), pthread_mutex_lock(), sigaction(), struct sigaction, SignalAction(), SignalKill(), sigsuspend(), sigwaitinfo(), SyncSemWait(), ThreadCreate()
Предыдущий раздел: перейти