Как выполнить функцию (идентифицированную указателем) из lldb

0

Как я могу назвать регулярную функцию (а не блок) в LLDB?

Я пробовал использовать:

expr int $addr = 0x51bb45
expr (void (^)(void))$addr
expr $0()

но я получаю сообщение об ошибке "Не получилось запустить событие после intiial резюме, вместо этого остановился. Не удалось выполнить функцию; результатом был eExecutionSetupError '

вот как объявлена функция, но у меня нет символов... extern "C" void do_something (void)

редактировать:

решение должно использовать:

(void (*)(void))$addr
  • 2
    Это не похоже на указатель блока. Как насчет (void (*)(void))$addr ?
  • 0
    Спасибо сработало
Теги:
function
debugging
lldb

1 ответ

1
Лучший ответ

Если это то, как объявлена функция, то это указатель блока, а не регулярная функция. Как сказал nos, в декларации было бы *, если бы это был указатель на функцию. lldb в настоящее время не знает, как вызвать указатели на блок: например, методы C++ и ObjC им нужен правильно сконструированный искусственный первый аргумент, а lldb не знает, как это сделать для блоков.

  • 0
    что ни сказал, это было правильно. это не указатель блока - я пытаюсь запустить функцию и просто нашел только пример блока ptr.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню