Take the 2-minute tour ×  I'll explain:  Let's say I'm
interested in replacing the rand() function used by a certain
application.  So I attach gdb to this process and make it load
my custom shared library (which has a customized rand()
function):  call (int) dlopen("path_to_library/asdf.so")  This
would place the customized rand() function inside the process'
memory. However, at this point the symbol rand will still point
to the default rand() function. Is there a way to make gdb point
the symbol to the new rand() function, forcing the process to
use my version?  I must say I'm also not allowed to use the
LD_PRELOAD (linux) nor DYLD_INSERT_LIBRARIES (mac os x) methods
for this, because they allow code injection only in the
beginning of the program execution.  The application that I
would like to replace rand(), starts several threads and some of
them start new processes, and I'm interested in injecting code
on one of these new processes. As I mentioned above, GDB is
great for this purpose because it allows co