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