Просто создайте файл для вставленного кода (убедившись, что реализация находится вне строки) ... пространства имен, имя класса и функция должны быть такими же, как и для метода, который вы хотите перехватить. В своем определении класса не упоминайте другие методы, которые вы не хотите перехватывать. Помните, что LD_PRELOAD нужен полный путь к перехваченному общему объекту.
Например, чтобы перехватить void X :: fn1 (), создайте файл libx2.cc с:
#include <iostream>
class X
{
public:
void X::fn1();
};
void X::fn1() { std::cout << "X2::fn()\n"; }
Затем скомпилируйте это:
g++ -shared -o libx2.so libx2.cc
Тогда беги аля
LD_PRELOAD=`pwd`/libx2.so ./libx_client
Приветствия