ceEst-il possible de faire un échange de code à chaud dans C?
en.wikipedia.org/wiki/Hot_swapping#cite_note-1
dit que VS peut le faire avec l'aide de son débogueur. Est-ce que gdb fournit une fonctionnalité similaire?
c'est le plus proche que je pouvais trouver, mais ne semble pas être prêt à être utilisé:
http://www.aitdspace.gr/xmlui/handle/123456789/219
dlopen/dlsym/dlclose sont également proches, mais ne fonctionnera pas pour -lmylib référencé bibliothèques (le nombre de références n'est jamais égal à 0).
alternatives je l'ai considéré:
1) en utilisant -Wl, -wrap, foo et __wrap_foo() {func = dlopen(); func(); }
2) de faire libfoo.so une bibliothèque partagée et quand nous avons besoin de hotswap nous dlopen (RTLD_GLOBAL) pour charger le nouveau code et fournir des symboles mis à jour à l'appel suivant à foo();
1) ne fonctionne pas très bien car il m'oblige à énumérer toutes les fonctions que je veux hotswap, qui sont toutes.
2) ne fonctionne pas très bien car lorsque foo() est appelé, le nouveau code est chargé, mais foo a toujours la référence à ce symbole. appeler dlopen plusieurs fois fait que foo doit être réévalué.
Voir aussi [ "code automodifiable"] (http://en.wikipedia.org/wiki/Self-modifying_code) et [ "trampoline"] (http://en.wikipedia.org/wiki/Trampoline_%28computers%29)? – dmckee