Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Ingham <jingham@apple.com>
To: GDB List <gdb@sources.redhat.com>
Subject: Re: MI: performance of getting stack arguments
Date: Thu, 20 Apr 2006 10:22:00 -0000	[thread overview]
Message-ID: <37D48AED-AF3A-46D4-84B5-DFC9E3FB9B08@apple.com> (raw)
In-Reply-To: <u64l6x8bt.fsf@gnu.org>


On Apr 19, 2006, at 1:45 AM, Eli Zaretskii wrote:

>> Cc: Vladimir Prus <ghost@cs.msu.su>, gdb@sources.redhat.com
>> From: Jim Ingham <jingham@apple.com>
>> Date: Tue, 18 Apr 2006 14:17:24 -0700
>>
>> But just keep in
>> mind, when you are implementing a GUI debugger that anything you show
>> in the UI you are pledging to update every time a step is completed.
>> And most folks are pretty sensitive about how long it takes for each
>> step to complete. So you do need to be a bit conservative about what
>> you display by default.  Adding to this, gdb does get slow as
>> programs get large, which makes it even more important to be  
>> judicious.
>
> How about if we implement a facility to send just the changes in the
> call stack since the last time the stack was sent?  This way, the
> amount of stuff sent each stop will be much smaller, I think.


We have seldom found that it's the amount of data sent that is the  
bottle-neck.  It's almost always gdb's processing that's too slow.

For instance, in the case of the stack, we implemented a "stack-list- 
frames-lite" that uses gdb's unwinder to get the first couple of  
stack frames (which are the hard ones) and then uses a simple method  
that doesn't do unwinding, but just traces the stored pc & fp up the  
stack (which is easy because you know that there are no frameless  
functions in the way.)  Using this (and then only letting gdb do the  
real stack backtrace when the stack has changed) made a noticeable  
improvement in step response times.

Anyway, in the course of profiling all this stuff, we didn't find  
that the data handing was a significant part of the time spent.

N.B. one of the points of Andrew's frame changes was to allow the  
platform unwinders to have a quick unwind if only the fp & pc were  
requested, and then do the full unwind if anything else was  
requested.  That way just the simple stack would be fast, and  
anything more would bring in prologue parsing, etc.  It's been on my  
to-do list to try to get this to work for a while, but I haven't  
found the time to do it yet.

Jim



  reply	other threads:[~2006-04-19 16:13 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-18 16:40 Vladimir Prus
2006-04-18 16:45 ` Daniel Jacobowitz
2006-04-18 21:15   ` Jim Ingham
2006-04-19  7:55   ` Vladimir Prus
2006-04-19 16:13     ` Eli Zaretskii
2006-04-20  8:50     ` Daniel Jacobowitz
2006-04-26 14:10       ` Vladimir Prus
2006-04-26 14:59         ` Daniel Jacobowitz
2006-04-26 18:02           ` Vladimir Prus
2006-04-26 18:17             ` Daniel Jacobowitz
2006-04-18 19:11 ` Jim Ingham
2006-04-18 21:35   ` Robert Dewar
2006-04-18 21:37     ` Jim Ingham
2006-04-19  6:08       ` Robert Dewar
2006-04-19  7:30         ` Vladimir Prus
2006-04-19  6:11       ` Nick Roberts
2006-04-19  8:45         ` Eli Zaretskii
2006-04-19  9:02           ` Nick Roberts
2006-04-19 12:40       ` Eli Zaretskii
2006-04-20 10:22         ` Jim Ingham [this message]
2006-04-19  6:20   ` Vladimir Prus
2006-04-19  8:28 ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=37D48AED-AF3A-46D4-84B5-DFC9E3FB9B08@apple.com \
    --to=jingham@apple.com \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox