[GDB 7.6/GCC 4.8.0] Slowdown in GDB macro processing for cores?

Paul Smith psmith@gnu.org
Wed May 22 20:52:00 GMT 2013


On Wed, 2013-05-22 at 14:12 -0600, Tom Tromey wrote:
> >>>>> "Paul" == Paul Smith <psmith@gnu.org> writes:
> 
> Paul> The interesting thing is both versions are constantly seeking and
> Paul> reading to exactly the same location, over and over again.  However GDB
> Paul> 4.6 does it many times more than GDB 7.5.1.  For example, I get this
> Paul> combo:
> 
> Paul> 14:51:34.423582 lseek(7, 26763264, SEEK_SET) = 26763264 <0.000004>
> Paul> 14:51:34.423609 read(7,
> Paul> "P\361\236\0\0\0\0\0`\361\236\0\0\0\0\0p\361\236\0\0\0\0\0\200\361\236\0\0\0\0\0"...,
> Paul> 4096) = 4096 <0.000015>
> 
> A backtrace from one of these seeks or reads might be useful.
> 
> Or, gprof.

I'll see what I can do.  Meantime, git bisect declares this commit to be
the one that introduced the slow behavior:

677b1bfabd372790dca4dad32fcb05dd77658728 is the first bad commit
commit 677b1bfabd372790dca4dad32fcb05dd77658728
Author: Keith Seitz <keiths@redhat.com>
Date:   Fri Nov 16 20:54:28 2012 +0000

        PR c++/13615
        * cp-namespace.c (cp_lookup_symbol_in_namespace): Add SEARCH
        parameter and pass it to lookup_symbol_file.
        (cp_lookup_symbol_imports): Tell cp_lookup_symbol_in_namespace
        to search base classes.
        (cp_lookup_symbol_namespace): Likewise.
        (lookup_namespace_scope): Likewise.
        (lookup_symbol_file): Add SEARCH parameter.
        If SEARCH is non-zero and no symbol is found, lookup the class
        and call cp_lookup_nested_symbol.
        (find_symbol_in_baseclass): New function.
        (cp_lookup_nested_symbol): Do not let
        cp_lookup_symbol_in_namespace search through base classes.
        Do that later when there is no global symbol match.
    
        PR c++/13615
        * gdb.cp/baseenum.cc: New file.
        * gdb.cp/baseenum.exp: New file.
        * gdb.cp/derivation.cc (A): Add copyright.
        Add a typedef.
        (B): Use A::value_type instead of int.  Change all references.
        (D): Use value_type instead of int.  Change all references.
        (E): Likewise.
        (F); Likewise.
        (Z): New class.
        (ZZ): New class.
        (N, Base, Derived): New namespace and classes.
        (main): Add instances of Z and ZZ.
        Make sure all symbols from N are kept.
        * gdb.cp/derivation.exp: Update typedef changes in tests.
        Add tests for class typedefs both before and after starting
        the inferior.
        Add tests for searching for a typedef while stopped in a
        method.

:040000 040000 f605271943211b58d6946f8f837053aac8e2b185
0afb509700f9a0d88f26fb498615c9c906bfeb1d M      gdb



More information about the Gdb mailing list