public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Pedro Alves <pedro_alves@portugalmail.pt>
To: gdb@sourceware.org, personel personel <lepascal01@yahoo.com>,
	  gdb-patches <gdb-patches@sourceware.org>
Subject: Re: Debugging a Vlc dll with GDB.
Date: Fri, 07 Dec 2007 01:57:00 -0000	[thread overview]
Message-ID: <4758A871.9060508@portugalmail.pt> (raw)
In-Reply-To: <20071207004226.GA30430@caradoc.them.org>

[-- Attachment #1: Type: text/plain, Size: 2964 bytes --]

Daniel Jacobowitz wrote:
> On Fri, Dec 07, 2007 at 12:28:42AM +0000, Pedro Alves wrote:
>> I could swear there use to be a "pending resolved"
>> notice.  Did it go away with the multiple breakpoint
>> location support?
> 
> Yes, I believe so.  It was mostly there to warn you that the
> breakpoint number had changed, which Vladimir has now fixed.
> 

Humm, I found it useful, as in "ok, the breakpoint I set in a
function that will only trigger after I do this, that, and that,
is correctly set".  Now, I have to interrupt the inferior and
do an info breakpoints to see if it got in.  If the breakpoint
is in a plugin that gets loaded in reaction to some event, its
even worse, as I'll have to poll...

>>  	  if (pending_break_support == AUTO_BOOLEAN_AUTO && 
>> -	      !nquery ("Make breakpoint pending on future shared library load? "))
>> +	      !nquery (_("\
>> +Make breakpoint pending on future symbol file addition? ")))
> 
> Accurate, but I don't like it much... sounds awkward.
> 
> For the rest, I don't really like the churn on messages; would it work
> to just push the error down below *not_found_ptr = 1, and make it a
> NOT_FOUND_ERROR?
> 

Yes it works, but do we want both the current error message,
and NOT_FOUND_ERROR message that's already there, but not
triggered currently, which is the message one usually sees?
I guess you mean something like the attached?

In IMHO *this* looks awkward:

   >gdb/gdb.exe gdb-stripped.exe
GNU gdb 6.7.50.20071206-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-cygwin"...
(no debugging symbols found)
(gdb) b main
No symbol table is loaded.  Use the "file" command.
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (main) pending.
(gdb) file gdb/gdb.exe
Reading symbols from /home/pedro/gdb/build/gdb/gdb.exe...done.
(gdb) r
Starting program: /home/pedro/gdb/build/gdb/gdb.exe

Breakpoint 1, main (argc=1, argv=0xe336e8) at ../../gdb/src/gdb/gdb.c:28
28        memset (&args, 0, sizeof args);
(gdb) info b
Num     Type           Disp Enb  Address    What
1       breakpoint     keep y    0x0040107a in main at ../../gdb/src/gdb/gdb.c:28
           breakpoint already hit 1 time
(gdb)

Should one really care if there is no symbol table
loaded, as opposed to having symbols for everything else
but what one needs?  To me, what's important is that the
symbol I requested isn't found.  With the error out of
the way, we'll ask if the user would like to make it
pending on a *shared library* load.  But, the user may
know the symbol isn't from a shared lib (like the example
above), get confused, and answer no to the pending query.

-- 
Pedro Alves


[-- Attachment #2: pending.diff --]
[-- Type: text/x-diff, Size: 2122 bytes --]

2007-12-07  Pedro Alves  <pedro_alves@portugalmail.pt>

	* linespec.c (symtab_from_filename): Don't error out early if
	there are no symbols loaded.
	(decode_variable): Likewise.

---
 gdb/linespec.c |   28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

Index: src/gdb/linespec.c
===================================================================
--- src.orig/gdb/linespec.c	2007-12-07 00:33:10.000000000 +0000
+++ src/gdb/linespec.c	2007-12-07 01:39:08.000000000 +0000
@@ -1534,11 +1534,16 @@ symtab_from_filename (char **argptr, cha
   file_symtab = lookup_symtab (copy);
   if (file_symtab == 0)
     {
-      if (!have_full_symbols () && !have_partial_symbols ())
-	error (_("No symbol table is loaded.  Use the \"file\" command."));
+      int nosyms = !have_full_symbols () && !have_partial_symbols ();
+
       if (not_found_ptr)
 	*not_found_ptr = 1;
-      throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy);
+
+      throw_error (NOT_FOUND_ERROR, _("\
+%s\
+No source file named %s."),
+		   nosyms ? _("\
+No symbol table is loaded.  Use the \"file\" command.\n") : "", copy);
     }
 
   /* Discard the file name from the arg.  */
@@ -1727,6 +1732,7 @@ decode_variable (char *copy, int funfirs
   struct symtab *sym_symtab;
 
   struct minimal_symbol *msymbol;
+  int nosyms;
 
   sym = lookup_symbol (copy,
 		       (file_symtab
@@ -1744,13 +1750,19 @@ decode_variable (char *copy, int funfirs
   if (msymbol != NULL)
     return minsym_found (funfirstline, msymbol);
 
-  if (!have_full_symbols () &&
-      !have_partial_symbols () && !have_minimal_symbols ())
-    error (_("No symbol table is loaded.  Use the \"file\" command."));
-
   if (not_found_ptr)
     *not_found_ptr = 1;
-  throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy);
+
+  nosyms = (!have_full_symbols ()
+	    && !have_partial_symbols ()
+	    && !have_minimal_symbols ());
+
+  throw_error (NOT_FOUND_ERROR,
+	       _("\
+%s\
+Function \"%s\" not defined."),
+	       nosyms ? _("\
+No symbol table is loaded.  Use the \"file\" command.\n") : "", copy);
 }
 
 



  reply	other threads:[~2007-12-07  1:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-06 17:38 personel personel
2007-12-06 17:53 ` Dave Korn
2007-12-06 18:23 ` Daniel Jacobowitz
2007-12-06 20:15   ` personel personel
2007-12-06 20:29     ` Daniel Jacobowitz
2007-12-06 20:57       ` Brian Dessent
2007-12-07  0:28         ` Pedro Alves
2007-12-07  0:42           ` Daniel Jacobowitz
2007-12-07  1:57             ` Pedro Alves [this message]
2007-12-07 13:54               ` Daniel Jacobowitz
2007-12-08 10:54                 ` Eli Zaretskii
2007-12-07 16:21             ` Dave Korn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4758A871.9060508@portugalmail.pt \
    --to=pedro_alves@portugalmail.pt \
    --cc=gdb-patches@sourceware.org \
    --cc=gdb@sourceware.org \
    --cc=lepascal01@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).