Debugging against an .so on Linux

Hi all,

I’m trying to debug an Android process where what I have is a .so that is dynamically loaded by the Android runtime. gdb is able to debug this case, and I’m attempting to talk to the stock gdbserver.

I think maybe I have a chicken-and-egg problem: I can’t find where the .so file has been loaded without getting the “image info address”, and I can’t do that without having loaded the .so file. Is this a supported configuration (starting with a .so file on Linux instead of a fork+exec executable)? The .so file has no entry address and it has no DT_DEBUG symbol (so ObjectFileELF::GetImageInfoAddress() fails to find an address). Do we need to find the executable file itself to get started?

I have code to download the library load locations via a gdbserver packet, but I was hoping not to use it, and, more importantly to use more of the existing DynamicLoaderPOSIXDYLD plug-in. I’m going to need to be able to set breakpoints in the dynamic loader the same way that the POSIX plugin already knows how to do.