This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: (remote) hellishly slow single stepping over library calls
- From: Quality Quorum <qqi at theworld dot com>
- To: Kris Warkentin <kewarken at qnx dot com>
- Cc: "Gdb at Sources dot Redhat dot Com" <gdb at sources dot redhat dot com>
- Date: Fri, 16 May 2003 15:15:34 -0400
- Subject: Re: (remote) hellishly slow single stepping over library calls
On Fri, 16 May 2003, Kris Warkentin wrote:
> When debugging using our QNX pdebug remote protocol and single stepping over
> a library call like printf, it takes a LOOOONG time. I'm talking like two
> or three minutes. A 'next' is fine but looking at the output of running our
> pdebug server in verbose mode, gdb is doing step, step, step, all the way
> through the whole library call. Every single step results in fetching
> registers and there is a huge amount of wire traffic generated.
>
> This didn't happen with older (ie 5.0) gdbs which didn't seem to know how to
> single step through our shared lib code but now that it does, this is pretty
> painful. Obviously it makes more sense to 'next' over a library call,
> especially if you don't want to go into it but the question is, can anyone
> think of a way to optimize this? I though of putting in a hack like:
>
> if (reg == PC_REGNUM)
> only_get_pc();
>
> to avoid fetching the whole regset but it probably won't make that much
> difference since there's still a packet over the wire each time and most
> regsets fit in one packet anyway.
>
> Would this problem also exist with the normal remote protocol? (stupid
> users...clicking step instead of next....;-)
>
What about using the T-format with a value of PC to report status, instead
of using the S-format, for the purpose.
> Kris
Thanks,
Aleksey