Article View: gnu.gdb.bug
Article #131GDB 4.6 is slower than molasses on large C++ programs
From: Paul Eggert
Date: Tue, 28 Jul 1992 02:21
Date: Tue, 28 Jul 1992 02:21
53 lines
2867 bytes
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!eggertShow 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