🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gdb.bug
Article #131

GDB 4.6 is slower than molasses on large C++ programs

#131
From: Paul Eggert
Date: Tue, 28 Jul 1992 02:21
53 lines
2867 bytes
GDB 4.6 is very slow when debugging large C++ problems (sparc, SunOS 4.1.2,
with GCC 2.2.2).  Most of the problems seem to be related to lookup_symbol's
disconcerting habit of sequentially demangling every symbol in the program
whenever it can't look something up.  Perhaps this behavior could be switched
off -- normally one doesn't want GDB to pause for 30 seconds simply to tell
you that you misspelled a variable.

Here's one fix that helped somewhat.  GDB internally converts expressions like
`this->f' to `$this->f'; but the `$' causes it to go through its painfully
slow sequential search for demangled symbols, because lookup_symbol thinks
`$this' is from a quoted name string.  Here's a workaround; but more work is
needed.

===================================================================
RCS file: main.c,v
retrieving revision 4.6
diff -c -r4.6 main.c
*** main.c	1992/07/14 07:34:27	4.6
--- main.c	1992/07/28 00:02:51
***************
*** 1054,1060 ****
  
  /* Variables which are necessary for fancy command line editing.  */
  char *gdb_completer_word_break_characters =
!   " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
  
  /* When completing on command names, we remove '-' from the list of
     word break characters, since we use it in command names.  If the
--- 1054,1060 ----
  
  /* Variables which are necessary for fancy command line editing.  */
  char *gdb_completer_word_break_characters =
!   " \t\n!@#%^&*()+=|~`}{[]\"';:?/>.<,-";
  
  /* When completing on command names, we remove '-' from the list of
     word break characters, since we use it in command names.  If the
***************
*** 1062,1068 ****
     it thinks that the string needs to be quoted and automatically supplies
     a leading quote. */
  char *gdb_completer_command_word_break_characters =
!   " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
  
  /* Characters that can be used to quote completion strings.  Note that we
     can't include '"' because the gdb C parser treats such quoted sequences
--- 1062,1068 ----
     it thinks that the string needs to be quoted and automatically supplies
     a leading quote. */
  char *gdb_completer_command_word_break_characters =
!   " \t\n!@#%^&*()+=|~`}{[]\"';:?/>.<,";
  
  /* Characters that can be used to quote completion strings.  Note that we
     can't include '"' because the gdb C parser treats such quoted sequences
Technical Details
Message-ID: <9207280221.AA28594@farside.twinsun.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!darwin.sura.net!mips!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!twinsun.COM!eggert

Show Full Headers
Complete Article Headers
Newsgroups: gnu.gdb.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!darwin.sura.net!mips!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!twinsun.COM!eggert
From: eggert@twinsun.COM (Paul Eggert)
Subject: GDB 4.6 is slower than molasses on large C++ programs
Message-ID: <9207280221.AA28594@farside.twinsun.com>
Sender: gnulists@ai.mit.edu
Organization: GNUs Not Usenet
Distribution: gnu
Date: Tue, 28 Jul 1992 02:21:32 GMT
Approved: bug-gdb@prep.ai.mit.edu
Lines: 54