LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

То есть вы предлагаете полностью повторить логику кода my_function() в my_function_DBG() ?

Как вариант. Можно придумать еще что-нибудь, например есть такая фича в компиляторе GCC: https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html - по адресу возврата можно узнать, из какого места вызывалась та или иная функция (при условии что там ничего не заинлайнилось - When inlining the expected behavior is that the function returns the address of the function that is returned to. To work around this behavior use the noinline function attribute.) и таким образом сделать особенное поведение только для тех вызовов func1()..func(3), которые были произведены из какой-то конкретной функции.

Еще есть Kpatch, kGraft, Ksplice которые тоже могут быть использованы для замены одной функции другой

Исходная версия SZT, :

То есть вы предлагаете полностью повторить логику кода my_function() в my_function_DBG() ?

Как вариант. Можно придумать еще что-нибудь, например есть такая фича в компиляторе GCC: https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html - по адресу возврата можно узнать, из какого места вызывалась та или иная функция (при условии что там ничего не заинлайнилось - When inlining the expected behavior is that the function returns the address of the function that is returned to. To work around this behavior use the noinline function attribute.) и таким образом сделать особенное поведение только для тех вызовов func1()..func(3), которые были произведены из какой-то конкретной функции.

Еще есть Kpatch, kGraft, Ksplice которые тоже для этого могут подойти