RFC: have maint print statistics print a little more
Jason Molenda
jason-swarelist@molenda.com
Thu Feb 13 01:54:00 GMT 2003
At Apple we're often faced with a mysteriously slow gdb. It would
be very helpful to know if we've just expanded all the psymtabs
into symtabs, or if we have some problem from the compiler that is
causing us to get a vastly larger number of psymtabs for header
files than we would normally have.
This patch adds a few new entries to the objfile information printed
by maint print statistics:
Statistics for '/home/jmolenda/sware/gdb/b/gdb/gdb':
Number of "stab" symbols read: 139907
Number of "minimal" symbols read: 8022
Number of "partial" symbols read: 24584
Number of "types" defined: 4794
* Number of psym tables (not yet expanded): 904
* Number of symbol tables: 260
* Number of symbol tables with line tables: 32
* Number of symbol tables with blockvectors: 33
Space used by a.out string tables: 1060259
Total memory used for psymbol obstack: 1190666
Total memory used for psymbol cache: 513072
Total memory used for macro cache: 4072
Total memory used for symbol obstack: 1717613
Total memory used for type obstack: 550039
I highlighted the new entries with '*'. This would be a very useful
piece of information when presented with a slow gdb here at Apple
- I think other folks may find it useful as well.
This patch introduces no new testsuite failures.
Comments?
J
-------------- next part --------------
2003-02-12 Jason Molenda (jmolenda@apple.com)
* symmis.c (print_objfile_statistics): Include information about
the number of psymtabs and symtabs in each object file.
Index: symmisc.c
===================================================================
RCS file: /cvs/src/src/gdb/symmisc.c,v
retrieving revision 1.14
diff -u -p -r1.14 symmisc.c
--- symmisc.c 18 Jan 2003 15:55:53 -0000 1.14
+++ symmisc.c 13 Feb 2003 01:48:50 -0000
@@ -179,6 +179,9 @@ void
print_objfile_statistics (void)
{
struct objfile *objfile;
+ struct symtab *s;
+ struct partial_symtab *ps;
+ int i, linetables, blockvectors;
immediate_quit++;
ALL_OBJFILES (objfile)
@@ -199,6 +202,28 @@ print_objfile_statistics (void)
if (OBJSTAT (objfile, n_types) > 0)
printf_filtered (" Number of \"types\" defined: %d\n",
OBJSTAT (objfile, n_types));
+ i = 0;
+ ALL_OBJFILE_PSYMTABS (objfile, ps)
+ {
+ if (ps->readin == 0)
+ i++;
+ }
+ printf_filtered (" Number of psym tables (not yet expanded): %d\n", i);
+ i = linetables = blockvectors = 0;
+ ALL_OBJFILE_SYMTABS (objfile, s)
+ {
+ i++;
+ if (s->linetable != NULL)
+ linetables++;
+ if (s->primary == 1)
+ blockvectors++;
+ }
+ printf_filtered (" Number of symbol tables: %d\n", i);
+ printf_filtered (" Number of symbol tables with line tables: %d\n",
+ linetables);
+ printf_filtered (" Number of symbol tables with blockvectors: %d\n",
+ blockvectors);
+
if (OBJSTAT (objfile, sz_strtab) > 0)
printf_filtered (" Space used by a.out string tables: %d\n",
OBJSTAT (objfile, sz_strtab));
More information about the Gdb-patches
mailing list