public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Pedro Alves <pedro_alves@portugalmail.pt>
To: gdb@sourceware.org
Cc: personel personel <lepascal01@yahoo.com>,
	  gdb-patches <gdb-patches@sourceware.org>
Subject: Re: Debugging a Vlc dll with GDB.
Date: Fri, 07 Dec 2007 00:28:00 -0000	[thread overview]
Message-ID: <475893BA.8000700@portugalmail.pt> (raw)
In-Reply-To: <47586224.CE80C330@dessent.net>

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

[RFC patch attached -- cc'ed to gdb-patches@]

Brian Dessent wrote:
> Daniel Jacobowitz wrote:
> 
>>>    (gdb) break libvlc_new
>>>     No symbol table is loaded. use the file command
>> Try "set pending on"?  Or you may need a newer version of GDB.
> 
> I don't think pending being off is the problem, but you do need a more
> recent gdb than what ships with Cygwin.  With recent CVS gdb I have had
> success with something like:
> 
> gdb VLCTest.exe
> add-shared-symbol-files libvlc.dll
> b libvlc_new
> run
> 
> I have always found debugging stripped binaries on Win32 with gdb to be
> somewhat unpleasant.  After the first time that the program has run and
> terminates, all the pending breakpoint stuff usually seems to work fine,
> it's just that initially when nothing has loaded yet it does not.  So
> that's another workaround, just run the inferior to completion without
> any breakpoints and then start debugging the second run.
> 

My opinion is that the pending support should kick in on this case, like
in the attached patch, like so:

  > 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 LoadLibraryW
Function not found in loaded symbols: LoadLibraryW
Make breakpoint pending on future symbol file addition? (y or [n]) y
Breakpoint 1 (LoadLibraryW) pending.
(gdb) r
Starting program: /home/pedro/gdb/build/gdb-stripped.exe
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)

Breakpoint 1, 0x7c80ae4b in LoadLibraryW () from
/cygdrive/c/WINDOWS/system32/kernel32.dll
(gdb)

   (Those unconditional "(no debugging symbols found)" in
    symbol_file_add_with_addrs_or_offsets seem silly to me.
    An idea would be:
         if (mainline || from_tty || info_verbose)
           printf_filtered (_("(no debugging symbols found)"));
    ?
   )

And also:

  >gdb/gdb 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
Function not found in loaded symbols: main
Make breakpoint pending on future symbol file addition? (y or [n]) y
Breakpoint 1 (main) pending.
(gdb) info b
Num     Type           Disp Enb  Address    What
1       breakpoint     keep y(p) <PENDING>  main
(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=0xe336e0) at
../../gdb-server_submit/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-server_submit/src/gdb/gdb.c:28
          breakpoint already hit 1 time
(gdb)


I could swear there use to be a "pending resolved"
notice.  Did it go away with the multiple breakpoint
location support?

-- 
Pedro Alves


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

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

	* breakpoint.c (break_command_1): Update pending breakpoint query
	text.

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

---
 gdb/breakpoint.c |    3 ++-
 gdb/linespec.c   |   14 ++++++--------
 2 files changed, 8 insertions(+), 9 deletions(-)

Index: src/gdb/breakpoint.c
===================================================================
--- src.orig/gdb/breakpoint.c	2007-12-06 20:53:32.000000000 +0000
+++ src/gdb/breakpoint.c	2007-12-07 00:07:14.000000000 +0000
@@ -5505,7 +5505,8 @@ break_command_1 (char *arg, int flag, in
           /* If pending breakpoint support is auto query and the user
 	     selects no, then simply return the error code.  */
 	  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? ")))
 	    return e.reason;
 
 	  /* At this point, either the user was queried about setting
Index: src/gdb/linespec.c
===================================================================
--- src.orig/gdb/linespec.c	2007-10-03 01:16:04.000000000 +0100
+++ src/gdb/linespec.c	2007-12-06 23:53:34.000000000 +0000
@@ -1534,11 +1534,11 @@ 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."));
       if (not_found_ptr)
 	*not_found_ptr = 1;
-      throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy);
+      throw_error (NOT_FOUND_ERROR,
+		   _("Source file not found in loaded symbols: %s"),
+		   copy);
     }
 
   /* Discard the file name from the arg.  */
@@ -1744,13 +1744,11 @@ 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);
+  throw_error (NOT_FOUND_ERROR,
+	       _("Function not found in loaded symbols: %s"),
+	       copy);
 }
 
 


  reply	other threads:[~2007-12-07  0:28 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 [this message]
2007-12-07  0:42           ` Daniel Jacobowitz
2007-12-07  1:57             ` Pedro Alves
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=475893BA.8000700@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).