将共享库加载到正在 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)
应该可以,但我还没有试过。
我知道有一个类似的问题,但是那里的程序是在 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)
应该可以,但我还没有试过。