diff options
author | Doug Evans <dje@google.com> | 2015-05-27 12:55:19 -0700 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2015-05-27 12:55:19 -0700 |
commit | 27e0867f4da863cf4e0cf9a297ae86598419729f (patch) | |
tree | e893cb1df2ad8871e26f27040e408e8fce2b0c95 /gdb/dwarf2read.c | |
parent | 4dcabcc2b5d82dca1089f87e5830a8cd3b5a4bd6 (diff) | |
download | gdb-27e0867f4da863cf4e0cf9a297ae86598419729f.zip gdb-27e0867f4da863cf4e0cf9a297ae86598419729f.tar.gz gdb-27e0867f4da863cf4e0cf9a297ae86598419729f.tar.bz2 |
Add set/show debug dwarf-line.
gdb/ChangeLog:
* 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".
gdb/doc/ChangeLog:
* gdb.texinfo (Debugging Output): Mention set/show debug dwarf-line.
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r-- | gdb/dwarf2read.c | 43 |
1 files changed, 41 insertions, 2 deletions
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."), _("\ |