public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Doug Evans <dje@google.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 2/6] DWARF Two Level Line Tables: dwarf2_line_debug
Date: Wed, 27 May 2015 19:59:00 -0000	[thread overview]
Message-ID: <047d7bacbd5aba7fa5051715ae7f@google.com> (raw)

Eli Zaretskii writes:
  > > Date: Tue, 12 May 2015 13:39:27 -0700
  > > From: Doug Evans <dje@google.com>
  > > Cc: gdb-patches <gdb-patches@sourceware.org>, Cary Coutant  
<ccoutant@google.com>
  > >
  > > >>  A value of zero turns off the display.
  > > >>  @item show debug dwarf2-die
  > > >>  Show the current state of DWARF2 DIE debugging.
  > > >> +@item set debug dwarf2-line
  > > >> +@cindex DWARF2 Line Tables
  > > >> +Turns on or off display of debugging messages related to reading
  > > >> +DWARF line tables.  The default is 0 (off).
  > > >> +A value of 1 provides basic information.
  > > >> +A value greater than 1 provides more verbose information.
  > > >> +@item show debug dwarf2-line
  > > >> +Show the current state of DWARF2 line table debugging.
  > > >
  > > > This is also OK, but how about using "DWARF2" for consistency at  
least
  > > > in this fragment?
  > >
  > > Actually, I'd rather use "DWARF".
  >
  > I don't mind, as long as it's consistent.
  >
  > > Agreed. Where the version doesn't matter I propose using "DWARF".
  > > (as in the above)
  >
  > The above used both DWARF and DWARF2.

Here's what I pushed.

2015-05-27  Doug Evans  <dje@google.com>

	* NEWS: Mention "set debug dwarf-line".
	* dwarf2read.c (dwarf_line_debug): New static global.
	(add_include_dir): Add debug dwarf-line support.
	(add_file_name, dwarf_record_line, dwarf_finish_line): Ditto.
	(_initialize_dwarf2_read): New parameter "debug dwarf-line".

	doc/
	* gdb.texinfo (Debugging Output): Mention set/show debug dwarf-line.

diff --git a/gdb/NEWS b/gdb/NEWS
index 4c4e28c..bbfb55d 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -112,6 +112,10 @@ maint set dwarf max-cache-age
  maint show dwarf max-cache-age
    Renamed from "maint show dwarf2 max-cache-age".

+set debug dwarf-line
+show debug dwarf-line
+  Control display of debugging info regarding DWARF line processing.
+
  set max-completions
  show max-completions
    Set the maximum number of candidates to be considered during
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 6cc6c7e..9ea846a 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -23417,6 +23417,14 @@ The value is the number of nesting levels to print.
  A value of zero turns off the display.
  @item show debug dwarf-die
  Show the current state of DWARF DIE debugging.
+@item set debug dwarf-line
+@cindex DWARF Line Tables
+Turns on or off display of debugging messages related to reading
+DWARF line tables.  The default is 0 (off).
+A value of 1 provides basic information.
+A value greater than 1 provides more verbose information.
+@item show debug dwarf-line
+Show the current state of DWARF line table debugging.
  @item set debug dwarf-read
  @cindex DWARF Reading
  Turns on or off display of debugging messages related to reading
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 8e30ff3..e6d6b30 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -84,6 +84,9 @@ static unsigned int dwarf_read_debug = 0;
  /* When non-zero, dump DIEs after they are read in.  */
  static unsigned int dwarf_die_debug = 0;

+/* When non-zero, dump line number entries as they are read in.  */
+static unsigned int dwarf_line_debug = 0;
+
  /* When non-zero, cross-check physname against demangler.  */
  static int check_physname = 0;

@@ -17152,6 +17155,10 @@ free_line_header_voidp (void *arg)
  static void
  add_include_dir (struct line_header *lh, const char *include_dir)
  {
+  if (dwarf_line_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
+			lh->num_include_dirs + 1, include_dir);
+
    /* Grow the array if necessary.  */
    if (lh->include_dirs_size == 0)
      {
@@ -17181,6 +17188,10 @@ add_file_name (struct line_header *lh,
  {
    struct file_entry *fe;

+  if (dwarf_line_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
+			lh->num_file_names + 1, name);
+
    /* Grow the array if necessary.  */
    if (lh->file_names_size == 0)
      {
@@ -17529,6 +17540,14 @@ dwarf_record_line (struct gdbarch *gdbarch, struct  
subfile *subfile,
  {
    CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);

+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Recording line %u, file %s, address %s\n",
+			  line, lbasename (subfile->name),
+			  paddress (gdbarch, address));
+    }
+
    (*p_record_line) (subfile, line, addr);
  }

@@ -17541,8 +17560,18 @@ static void
  dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
  		   CORE_ADDR address, record_line_ftype p_record_line)
  {
-  if (subfile != NULL)
-    dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
+  if (subfile == NULL)
+    return;
+
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Finishing current line, file %s, address %s\n",
+			  lbasename (subfile->name),
+			  paddress (gdbarch, address));
+    }
+
+  dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
  }

  /* Subroutine of dwarf_decode_lines to simplify it.
@@ -23321,6 +23350,16 @@ The value is the maximum depth to print."),
  			     NULL,
  			     &setdebuglist, &showdebuglist);

+  add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug,  
_("\
+Set debugging of the dwarf line reader."), _("\
+Show debugging of the dwarf line reader."), _("\
+When enabled (non-zero), line number entries are dumped as they are read  
in.\n\
+A value of 1 (one) provides basic information.\n\
+A value greater than 1 provides more verbose information."),
+			     NULL,
+			     NULL,
+			     &setdebuglist, &showdebuglist);
+
    add_setshow_boolean_cmd ("check-physname", no_class, &check_physname,  
_("\
  Set cross-checking of \"physname\" code against demangler."), _("\
  Show cross-checking of \"physname\" code against demangler."), _("\

             reply	other threads:[~2015-05-27 19:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-27 19:59 Doug Evans [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-03-12 20:01 Doug Evans
2015-03-12 20:37 ` Eli Zaretskii
2015-05-12 20:39   ` Doug Evans
2015-05-13  2:44     ` Eli Zaretskii

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=047d7bacbd5aba7fa5051715ae7f@google.com \
    --to=dje@google.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    /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).