将共享库加载到正在 GDB 中调试的程序中

Load a shared library into a program being debugged in GDB

我知道有一个类似的问题,但是那里的程序是在 GDB 中启动的,所以 LD_PRELOAD 的解决方案有效。但是我想在我用“-p pid”附加的已经 运行 的进程中加载​​一个 .so。我应该使用 mmap 还是有更好的解决方案?

Should I use mmap

您没有说明为什么要加载此 .so (http://xyproblem.info)。假设您想在加载后从 .so 调用一个函数,mmap 不会 允许您这样做——加载器将不知道任何关于该库将不会解析其中的任何符号,等等

or is there a better solution ?

这个:(gdb) call dlopen("foo.so", 1)应该可以,但我还没有试过。