[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Функции callback для работы с несколькими нитями

Назначение

Обеспечивают доступ к средствам отладчика или приложения, необходимым для работы библиотеки отладки нитей.

Библиотека

Эти функции предоставляются отладчиком, связанным с библиотекой отладки нитей.

Формат


#include <sys/pthdebug.h>


int symbol_addrs(pthdb_user_t user,
pthdb_symbol_t symbols[],
int count)


int read_data(pthdb_user_t user,
void * buf,
pthdb_addr_t addr,
int size)


int write_data(pthdb_user_t user,
void * buf,
pthdb_addr_t addr,
int size)


int read_regs(pthdb_user_t user,
tid_t tid,
unsigned long long flags,
struct context64 * context)


int write_regs(pthdb_user_t user,
tid_t tid,
unsigned long long flags,
struct context64 * context)


int alloc(pthdb_user_t user,
size_t len,
void ** bufp)


int realloc(pthdb_user_t user,
void * buf,
size_t len,
void ** bufp)


int dealloc(pthdb_user_t user,
void * buf)


int print(pthdb_user_t user,
char * str)

Описание

int symbol_addrs()
Определяет адрес символов в отлаживаемой программе. Библиотека pthread вызывает эту функцию для получения адреса известных символов отладки. Если имя символа - NULL или "", функция возвращает адрес 0LL, просмотр не выполняется и сообщение об ошибке не выдается. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Точнее, если задан флаг PTHDB_FLAG_SUSPEND приложение, то программа может пользоваться либо функцией symbol_addrs из библиотеки pthread, передавая ей значение NULL, либо собственной функцией symbol_addrs.

int read_data()
Считывает указанное количество байт данных из активного процесса или из файла дампа и помещает эти данные в буфер. Если выполнение функции завершено успешно, она возвращает 0, в противном случае она возвращает ненулевое значение. Эта функция требуется всегда.

int write_data()
Записывает указанное число байт данных. С помощью этой функции библиотека pthdebug может передавать данные активному процессу. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция применяется в случаях, когда задан флаг PTHDB_FLAG_HOLD, а function.

int read_regs()
Функция callback для чтения регистров. Она должна считывать контекст нити ядра отлаживаемой программы из активного процесса или из файла дампа. Эта информация представлена в формате context64 как для 32-разрядных, так и для 64-разрядных процессов. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция требуется только при работе с функциями pthdb_pthread_context() и pthdb_pthread_setcontext().

int write_regs()
Функция записи в регистры. Она должна передавать указанную контекстную информацию нити ядра отлаживаемой программы с указанным ИД. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция требуется только при работе с функцией pthdb_pthread_setcontext().

int alloc()
Выделяет область памяти указанного размера и возвращает указатель на эту область. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция требуется всегда.

int realloc()
Изменяет размер области памяти на основе переданных параметров len и buf и возвращает указатель на новую область памяти. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция требуется всегда.

int dealloc()
Освобождает указанный буфер. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция требуется всегда.

int print()
Отправляет строку символов на стандартное устройство вывода отладчика. Если выполнение функции завершено успешно, она возвращает 0, в противном случае функция возвращает ненулевое значение. Эта функция callback предназначена только для отладки библиотеки. Выводимые сообщения не переводятся на другие языки и не описываются в документации, предназначенной для пользователей. Если вы не отлаживаете библиотеку отладки нитей, в эту функцию следует передавать значение NULL.

Примечание: Если write_data() и write_regs() равны NULL, то библиотека отладки нитей не будет записывать данные в стандартный вывод и регистры. При вызове функции pthdb_pthread_set_context() в случае, когда write_data() и write_regs() равны NULL, она возвращает значение PTHDB_NOTSUP.

Параметры


пользователь Описатель пользователя.
символы Массив символов.
число Число символов.
буфер Буфер.
адрес Адрес для чтения или записи.
размер Размер буфера.
флаги Флаги сеансов, необходимые значения - PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRS, PTHDB_FLAG_FPRS и PTHDB_FLAG_REGS.
идентификатор нити ИД нити.
флаги Флаги, определяющие, из какого регистра следует считать информацию или в какой регистр ее следует записать.
контекст Структура контекста.
длина Размер выделяемого буфера или буфера, на который нужно заменить исходный буфер.
буфер Указатель на буфер.
строка Строка для печати.

Возвращаемые значения

Если выполнение функции завершено успешно, она возвращает 0, в противном случае она возвращает ненулевое значение.

Связанная информация

Файл pthdebug.h.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]