My question is about remote debugging an application on an embedded arm processor using gdb/gdbserver.
I can debug the application itself, but the application dynamically links to a shared library which implements an in house communications protocol. I want to be able to set breakpoints within the shared library functions so try to figure out some device discovery problems.
I have made sure that the library is compiled with debug symbols and is loaded by gdb on the host side, I can list functions within the library and even set the breakpoints but as soon as I try to run the application I get an error message to the effect of:
Cannot insert breakpoint X.
Error accessing memory address : Input/output error.
where X is the breakpoint number in gdb and is an address far to small to be valid.
I am using the new library on both the target and the host machine, but via mount -o bind newlib oldlib
on the target from an nfs mount.
Does anyone have an idea about what could be wrong?
Thanks in advance.
I see this question is from 2009, but the current answers are out-of-date, so here's an update:
@Employed Russian suggested that you must use stop-on-solib-event
. This is no longer true; NDK r8d supports pending breakpoints in yet-to-be-loaded solibs.
@Brent Piddy says that stop-on-solib-event
doesn't work with gdbserver. This is also no longer true since at least r8c. My company has a product that relies on this NDK behavior from GDB, we would be in big trouble without it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With