DCMD_PROC_BREAK

Установка или удаление точек остановки, которыми владеет отлаживаемый процесс

Прототип:

#include <sys/debug.h>
#include <sys/procfs.h>
#define DCMD_PROC_BREAK __DIOTF( _DCMD_PROC, __PROC_SUBCMD_PROCFS + 14, procfs_break )

Аргументы:

filedes
Файловый дескриптор процесса (открытый файл /proc/PID/as). Файл должен быть открыт для записи.
dcmd
DCMD_PROC_BREAK.
dev_data_ptr
Указатель на структуру procfs_break.
n_bytes
Размер структуры procfs_break, полученный с помсощью sizeof().
dev_info_ptr
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()




Предыдущий раздел: перейти