Указатель на имя функции, входные параметры,?

Я пытаюсь реализовать функцию обратного отслеживания, как вызов функции сам. Я успешно смог развернуть стек, и у меня есть все обратные адреса в моем стеке. Теперь я хочу получить имя функции, имя переменной, введенное в мою функцию из этой информации. Также я хочу сделать это программно, то есть во время выполнения я смогу получить информацию обо всех функциях, которые до сих пор вызывались в моей программе. Давайте предположим, что я хорошо компилирую свой флаг -g во время компиляции.

Я пытаюсь использовать функцию dladdr(), чтобы получить имя функции, но это не сработало. Это дает мне ошибку, что "ошибка: неизвестное имя типа" Dl_info "". Вот мой фрагмент кода:

const char * get_func_name(void *ip){
        Dl_info info;
        int ret;
        ret = dladdr(ip,&info);
        if(ret < 0)
                return NULL;
        return info.dli_fname;
}

Я пытался исследовать библиотеку bfd, но у меня не было хорошего примера / учебника, какая-нибудь помощь? Я использую убунуту 14.04

1 ответ

На странице man, обязательно #define _GNU_SOURCE до тебя #include <dlfcn.h>, Эта структура и dladdr()являются расширениями GNU.

Другие вопросы по тегам