This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA] set print symbol-loading on|off


Along the lines of "set print thread-events on|off",
this option lets one turn off symbol loading messages.
If the app has *lots* of shared libraries, these messages
can be more noise than signal.

2008-07-10  Doug Evans  <dje@google.com>

	Add "set print symbol-loading on|off".
	* NEWS: Document new option.
	* symfile.h (print_symbol_loading): Declare.
	* symfile.c (print_symbol_loading): New global.
	(symbol_file_add_with_addrs_or_offsets): Only print "Reading symbols
	from ..." if print_symbol_loading.
	(_initialize_symfile): Add set/show print symbol-loading.
	* solib.c (solib_read_symbols): Only print "Loaded symbols for ..."
	if print_symbol_loading.

	* doc/gdb.texinfo: Document "set print symbol-loading on|off".
	

Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.280
diff -u -p -u -p -r1.280 NEWS
--- NEWS	10 Jul 2008 16:44:47 -0000	1.280
+++ NEWS	10 Jul 2008 20:16:31 -0000
@@ -68,6 +68,10 @@ find [/size-char] [/max-count] start-add
     val1 [, val2, ...]
   Search memory for a sequence of bytes.
 
+set print symbol-loading
+show print symbol-loading
+  Control printing of symbol loading messages.
+
 set debug timestamp
 show debug timestamp
   Display timestamps with GDB debugging output.
Index: solib.c
===================================================================
RCS file: /cvs/src/src/gdb/solib.c,v
retrieving revision 1.102
diff -u -p -u -p -r1.102 solib.c
--- solib.c	19 May 2008 15:49:14 -0000	1.102
+++ solib.c	10 Jul 2008 20:16:31 -0000
@@ -448,7 +448,7 @@ solib_read_symbols (struct so_list *so, 
 			"Error while reading shared library symbols:\n",
 			RETURN_MASK_ALL))
 	{
-	  if (from_tty)
+	  if (from_tty && print_symbol_loading)
 	    printf_unfiltered (_("Loaded symbols for %s\n"), so->so_name);
 	  so->symbols_loaded = 1;
 	  return 1;
Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.206
diff -u -p -u -p -r1.206 symfile.c
--- symfile.c	9 Jul 2008 11:16:49 -0000	1.206
+++ symfile.c	10 Jul 2008 20:16:31 -0000
@@ -171,6 +171,12 @@ Dynamic symbol table reloading multiple 
 		    value);
 }
 
+/* If non-zero, gdb will notify the user when it is loading symbols
+   from a file.  This is almost always what users will want to have happen;
+   but for programs with lots of dynamically linked libraries, the output
+   can be more noise than signal.  */
+
+int print_symbol_loading = 1;
 
 /* If non-zero, shared library symbols will be added automatically
    when the inferior is created, new libraries are loaded, or when
@@ -1046,9 +1052,12 @@ symbol_file_add_with_addrs_or_offsets (b
 	deprecated_pre_add_symbol_hook (name);
       else
 	{
-	  printf_unfiltered (_("Reading symbols from %s..."), name);
-	  wrap_here ("");
-	  gdb_flush (gdb_stdout);
+          if (print_symbol_loading)
+	    {
+	      printf_unfiltered (_("Reading symbols from %s..."), name);
+	      wrap_here ("");
+	      gdb_flush (gdb_stdout);
+	    }
 	}
     }
   syms_from_objfile (objfile, addrs, offsets, num_offsets,
@@ -1061,7 +1070,7 @@ symbol_file_add_with_addrs_or_offsets (b
 
   if ((flags & OBJF_READNOW) || readnow_symbol_files)
     {
-      if (from_tty || info_verbose)
+      if ((from_tty || info_verbose) && print_symbol_loading)
 	{
 	  printf_unfiltered (_("expanding to full symbols..."));
 	  wrap_here ("");
@@ -1103,7 +1112,8 @@ symbol_file_add_with_addrs_or_offsets (b
       xfree (debugfile);
     }
 
-  if (!have_partial_symbols () && !have_full_symbols ())
+  if (!have_partial_symbols () && !have_full_symbols ()
+      && print_symbol_loading)
     {
       wrap_here ("");
       printf_filtered (_("(no debugging symbols found)"));
@@ -1120,7 +1130,8 @@ symbol_file_add_with_addrs_or_offsets (b
 	deprecated_post_add_symbol_hook ();
       else
 	{
-	  printf_unfiltered (_("done.\n"));
+	  if (print_symbol_loading)
+	    printf_unfiltered (_("done.\n"));
 	}
     }
 
@@ -4219,4 +4230,12 @@ the global debug-file directory prepende
 				     NULL,
 				     show_debug_file_directory,
 				     &setlist, &showlist);
+
+  add_setshow_boolean_cmd ("symbol-loading", no_class,
+                           &print_symbol_loading, _("\
+Set printing of symbol loading messages."), _("\
+Show printing of symbol loading messages."), NULL,
+                           NULL,
+                           NULL,
+                           &setprintlist, &showprintlist);
 }
Index: symfile.h
===================================================================
RCS file: /cvs/src/src/gdb/symfile.h,v
retrieving revision 1.46
diff -u -p -u -p -r1.46 symfile.h
--- symfile.h	3 Feb 2008 22:13:29 -0000	1.46
+++ symfile.h	10 Jul 2008 20:16:31 -0000
@@ -267,6 +267,13 @@ extern char *obconcat (struct obstack *o
 
 			/*   Variables   */
 
+/* If non-zero, gdb will notify the user when it is loading symbols
+   from a file.  This is almost always what users will want to have happen;
+   but for programs with lots of dynamically linked libraries, the output
+   can be more noise than signal.  */
+
+extern int print_symbol_loading;
+
 /* If non-zero, shared library symbols will be added automatically
    when the inferior is created, new libraries are loaded, or when
    attaching to the inferior.  This is almost always what users will
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.507
diff -u -p -u -p -r1.507 gdb.texinfo
--- doc/gdb.texinfo	10 Jul 2008 09:30:59 -0000	1.507
+++ doc/gdb.texinfo	10 Jul 2008 20:16:34 -0000
@@ -11533,6 +11533,22 @@ is printed as follows:
 @item show opaque-type-resolution
 Show whether opaque types are resolved or not.
 
+@kindex set print symbol-loading
+@cindex print messages when symbols are loaded
+@item set print symbol-loading
+@itemx set print symbol-loading on
+@itemx set print symbol-loading off
+The @code{set print symbol-loading} command allows you to enable or
+disable printing of messages when @value{GDBN} loads symbols.
+By default, these messages will be printed, and normally this is what
+you want.  Disabling these messages is useful when debugging applications
+with lots of shared libraries where the quantity of output can be more
+annoying than useful.
+
+@kindex show print symbol-loading
+@item show print symbol-loading
+Show whether messages will be printed when @value{GDBN} loads symbols.
+
 @kindex maint print symbols
 @cindex symbol dump
 @kindex maint print psymbols


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]