это
en.wikipedia.org/wiki/Горячая_замена#cite_note-1
говорит, что VS может сделать это с помощью своего отладчика. Предоставляет ли gdb аналогичную функциональность?
это самое близкое, что я мог найти, но, похоже, не готов к использованию:
http://www.aitdspace.gr/xmlui/handle/123456789/219
dlopen/dlsym/dlclose также близки, но не будут работать для библиотек, на которые ссылаются -lmylib (счетчик ссылок никогда не достигает 0).
альтернативы, которые я рассматривал:
1) используя -Wl,-wrap,foo и __wrap_foo() { func = dlopen(); функция(); }
2) сделать libfoo.so разделяемой библиотекой, и когда нам нужно выполнить горячую замену, мы dlopen(RTLD_GLOBAL) для загрузки нового кода и предоставления обновленных символов для следующего вызова foo();
1) работает не очень хорошо, потому что мне нужно перечислить все функции, которые я хочу использовать в режиме «горячей замены», а это все они.
2) работает не очень хорошо, потому что при вызове foo() загружается новый код, но foo всегда имеет ссылку на этот символ. многократный вызов dlopen приводит к повторной оценке foo.