remotely debugging muti-threaded applicaton did not work with gdb 6.3.50.20050725-cvs
David Daney
ddaney@avtrex.com
Tue May 29 16:22:00 GMT 2007
Michael Zhang wrote:
> Hi there,
>
> I have been battling with this problem for a week now and searched
> all the available information ( GDB manual, gdb mailing list, etc.)
> but unfortunately could not find an answer. Here is my setup.
>
> - Host : x86 running FC1 with linux 2.4.22-1.2115.nptl
> - Target : mips le running linux 2.4.17
> - gdb 6.3.50.20050725-cvs and its included gdbserver (all cross-built
> for mips processor)
> - libc library 2.2.3 ( most of the shared library bear this version )
>
> Debugging problem:
>
> The gdb on the host can talk to the gdbserver on the target and I did
> not forget to set "solib-absolute-prefix". If I set breakpoints before
> the multiple threads are spawned, I could step through the code when
> the breakpoint was hit. However, once the application finished
> creating threads and if I stop the program to step through, it won't
> step and alway stuck in libc.so.6. The worst is all the threads are
> getting killed. And "info threads" never returns anything just
> reporting that the gdbserver could not get thread list.
>
> Any ideas even though it might have bee asked before. I am basically
> at my wit's end.
>
I had similar problems with a similar configuration. I would recommend
updating to the current GDB release (version 6.6). I have not verified
that gdbserver works for multi-threaded programs with the newer version,
but it has a much better chance.
As long as you are upgrading things, I would recommend at least glibc
2.3.3. The thread synchronization parts of libpthread are broken in
2.2.x for mips.
If you have enough memory you could also try running a native gdb on the
target. I have had very good results doing that.
David Daeny
More information about the Gdb
mailing list