DCMD_PROC_MAPDEBUG

Получение информации об ELF-файле отлаживаемого процесса

Прототип:

#include <sys/procfs.h>
#define DCMD_PROC_MAPDEBUG __DIOTF( _DCMD_PROC, __PROC_SUBCMD_PROCFS + 3, procfs_debuginfo )

Аргументы:

filedes
Файловый дескриптор процесса (открытый файл /proc/PID/as).
dcmd
DCMD_PROC_MAPDEBUG.
dev_data_ptr
Указатель на структуру procfs_debuginfo.
n_bytes
Размер структуры procfs_debuginfo, полученный с помсощью sizeof().
dev_info_ptr
NULL.

Описание:

Команда используется в сочетании с вызовом devctl(), а все перечисленные аргументы являются его типовыми параметрами. Команда позволяет получить информацию об ELF-файле отлаживаемого процесса, ассоциированного с filedes.

Она используется отладчиками для поиска объектного файла, содержащего информацию о некотором символе, даже если он был удалён (stripped) на целевой системе. Этот вызов полезен только для MAP_ELF мапирований. Если была выполнена любая релокация символов, данная трансляция будет отменена. Это позволяет передать адрес в пределах ELF-файла и получить в ответ адрес, по которому был слинкован оригинальный объект, чтобы отладчик мог найти символ. Это является расширением SYSV интерфейсов.

Структура procfs_debuginfo может содержать базовый адрес интересующего смапированного сегмента.

Команда DCMD_PROC_MAPDEBUG полезна для не-ELF объектов, если нужно получить его имя.

Исходящие данные:

Указатель на структуру procfs_debuginfo с заполненным полем vaddr.

Входящие данные:

Заполненная структура procfs_debuginfo.

Примеры:

procfs_debuginfo map;
map.info.vaddr = some_vaddr;
devctl( fd, DCMD_PROC_MAPDEBUG, &map, sizeof( map ), NULL );

Обратите внимание, что поле path в procfs_debuginfo представляет собой массив размером в один байт. Для его использования необходимо предуспотреть соответствующий буфер, например:

struct {
procfs_debuginfo info;
char buff[_POSIX_PATH_MAX];
} map;

Тематические ссылки:

pthread_join(), MsgReply(), InterruptWait(), MsgDeliverEvent(), MsgReceive(), MsgSend(), MsgSendPulse(), nanosleep(), procfs_debuginfo, pthread_cancel(), pthread_cond_wait(), pthread_create(), pthread_exit(), pthread_mutex_lock(), sigaction(), struct sigaction, SignalAction(), SignalKill(), sigsuspend(), sigwaitinfo(), SyncSemWait(), ThreadCreate()




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