это
en.wikipedia.org / вики / Hot_swapping # 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 (); FUNC (); }
2) сделав libfoo.so разделяемой библиотекой, и когда нам нужно выполнить горячую замену, мы открываем (RTLD_GLOBAL), чтобы загрузить новый код и предоставить обновленные символы для следующего вызова foo ();
1) работает не очень хорошо, потому что требует, чтобы я перечислил все функции, которые я хочу переключить, которые все они.
2) работает не очень хорошо, потому что когда вызывается foo (), загружается новый код, но foo всегда имеет ссылку на этот символ. вызов dlopen несколько раз заставит foo быть переоцененным.