aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2016-06-20 10:28:37 -0600
committerTom Tromey <tom@tromey.com>2016-06-23 07:56:35 -0600
commit17621150cc18737f0a80314cfd2f884b0c2e44b5 (patch)
tree2a1d4074986a586e83d4e4b9389c60ec39527b0c
parent0e9c5a5c9916efc8a6c518c84ffdd50a745482c3 (diff)
downloadgdb-17621150cc18737f0a80314cfd2f884b0c2e44b5.zip
gdb-17621150cc18737f0a80314cfd2f884b0c2e44b5.tar.gz
gdb-17621150cc18737f0a80314cfd2f884b0c2e44b5.tar.bz2
PR gdb/16483 - simplify "info frame-filters" output
PR gdb/16483 notes that the output of "info frame-filters" is quite voluminous. In particular it prints an entry for each objfile, even if only to say that the objfile does not have any associated frame filters. I think it's better to only print output when there is a frame filter. There's nothing worth doing with the no-frame-filter information, and limiting the output makes it much more readable. Built and regtested on x86-64 Fedora 23. 2016-06-23 Tom Tromey <tom@tromey.com> PR gdb/16483: * python/lib/gdb/command/frame_filters.py (InfoFrameFilter.list_frame_filters): Rename to print_list. Print nothing if no filters found. Return value indicating whether filters were printed. (InfoFrameFilter.print_list): Remove. (InfoFrameFilter.invoke): Print message if no frame filters found. 2016-06-23 Tom Tromey <tom@tromey.com> PR gdb/16483: * gdb.python/py-framefilter.exp: Add "info frame-filter" test before any filters are loaded.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/python/lib/gdb/command/frame_filters.py56
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.python/py-framefilter.exp4
4 files changed, 45 insertions, 32 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 68c754f..74f1c7e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2016-06-23 Tom Tromey <tom@tromey.com>
+
+ PR gdb/16483:
+ * python/lib/gdb/command/frame_filters.py
+ (InfoFrameFilter.list_frame_filters): Rename to print_list. Print
+ nothing if no filters found. Return value indicating whether
+ filters were printed.
+ (InfoFrameFilter.print_list): Remove.
+ (InfoFrameFilter.invoke): Print message if no frame filters
+ found.
+
2016-06-21 Walfred Tedeschi <walfred.tedeschi@intel.com>
* f-valprint.c (f_val_print): Add field names for printing
diff --git a/gdb/python/lib/gdb/command/frame_filters.py b/gdb/python/lib/gdb/command/frame_filters.py
index c9d4f3e..a5fb0a6 100644
--- a/gdb/python/lib/gdb/command/frame_filters.py
+++ b/gdb/python/lib/gdb/command/frame_filters.py
@@ -56,52 +56,44 @@ class InfoFrameFilter(gdb.Command):
else:
return "No"
- def list_frame_filters(self, frame_filters):
- """ Internal worker function to list and print frame filters
- in a dictionary.
-
- Arguments:
- frame_filters: The name of the dictionary, as
- specified by GDB user commands.
- """
-
+ def print_list(self, title, frame_filters, blank_line):
sorted_frame_filters = sorted(frame_filters.items(),
key=lambda i: gdb.frames.get_priority(i[1]),
reverse=True)
if len(sorted_frame_filters) == 0:
- print(" No frame filters registered.")
- else:
- print(" Priority Enabled Name")
- for frame_filter in sorted_frame_filters:
- name = frame_filter[0]
- try:
- priority = '{:<8}'.format(
- str(gdb.frames.get_priority(frame_filter[1])))
- enabled = '{:<7}'.format(
- self.enabled_string(gdb.frames.get_enabled(frame_filter[1])))
- except Exception:
- e = sys.exc_info()[1]
- print(" Error printing filter '"+name+"': "+str(e))
- else:
- print(" %s %s %s" % (priority, enabled, name))
-
- def print_list(self, title, filter_list, blank_line):
+ return 0
+
print(title)
- self.list_frame_filters(filter_list)
+ print(" Priority Enabled Name")
+ for frame_filter in sorted_frame_filters:
+ name = frame_filter[0]
+ try:
+ priority = '{:<8}'.format(
+ str(gdb.frames.get_priority(frame_filter[1])))
+ enabled = '{:<7}'.format(
+ self.enabled_string(gdb.frames.get_enabled(frame_filter[1])))
+ print(" %s %s %s" % (priority, enabled, name))
+ except Exception:
+ e = sys.exc_info()[1]
+ print(" Error printing filter '"+name+"': "+str(e))
if blank_line:
print("")
+ return 1
def invoke(self, arg, from_tty):
- self.print_list("global frame-filters:", gdb.frame_filters, True)
+ any_printed = self.print_list("global frame-filters:", gdb.frame_filters, True)
cp = gdb.current_progspace()
- self.print_list("progspace %s frame-filters:" % cp.filename,
- cp.frame_filters, True)
+ any_printed += self.print_list("progspace %s frame-filters:" % cp.filename,
+ cp.frame_filters, True)
for objfile in gdb.objfiles():
- self.print_list("objfile %s frame-filters:" % objfile.filename,
- objfile.frame_filters, False)
+ any_printed += self.print_list("objfile %s frame-filters:" % objfile.filename,
+ objfile.frame_filters, False)
+
+ if any_printed == 0:
+ print ("No frame filters.")
# Internal enable/disable functions.
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7939954..8b5274d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-23 Tom Tromey <tom@tromey.com>
+
+ PR gdb/16483:
+ * gdb.python/py-framefilter.exp: Add "info frame-filter" test
+ before any filters are loaded.
+
2016-06-21 Walfred Tedeschi <walfred.tedeschi@intel.com>
* gdb.fortran/derived-type.exp (print q): Add fields to the output.
diff --git a/gdb/testsuite/gdb.python/py-framefilter.exp b/gdb/testsuite/gdb.python/py-framefilter.exp
index aea4b45..61afa2f 100644
--- a/gdb/testsuite/gdb.python/py-framefilter.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter.exp
@@ -33,6 +33,10 @@ gdb_start
# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }
+gdb_test "info frame-filter" \
+ "No frame filters\\." \
+ "info frame filter before loading filters"
+
# Make the -gdb.py script available to gdb, it is automagically loaded by gdb.
# Care is taken to put it in the same directory as the binary so that
# gdb will find it.