Я отлаживаю некоторый JIT-код. Я присоединяю gdb к запущенному процессу. Я ищу способы установить точку останова (или любым другим способом), которая сделает gdb перерыв/паузу в каждом call instruction для конкретной функции. Я знаю имя функции.
Примечание. Я могу установить точку останова на взятой ветке для call instruction, т. е. gdb прерывается на функции, но я хочу, чтобы отладчик прервался перед тем, как взять эту ветвь, т. е. на call instruction.
Это возможно?
Спасибо
call, особенно если ваша функция находилась в хвостовой позиции. Если берется указатель функции на ваш JIT-код, он, вероятно, может быть вызван из любого места. И просто перечислить расположениеcallинструкций невозможно — возможно, они еще не были JIT-компилированы! Я хотел бы отметить, что, просто взглянув на адрес возврата, помещенный в стекcall, вы можете найти своего вызывающего абонента (при условии, опять же, что оптимизации хвостового вызова не произошло) . - person Iwillnotexist Idonotexist   schedule 25.12.2014