From 44e1ab7cb81101400024585e99452abf6571b0e6 Mon Sep 17 00:00:00 2001 From: Rocco Caputo Date: Wed, 18 Mar 2020 22:09:52 -0400 Subject: [PATCH 1/2] Highlight watched Expressions that have changed. --- .gdbinit | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gdbinit b/.gdbinit index 4ddc693..3cfc3d6 100644 --- a/.gdbinit +++ b/.gdbinit @@ -2056,6 +2056,7 @@ class Expressions(Dashboard.Module): def __init__(self): self.table = set() + self.previous_values = {} def label(self): return 'Expressions' @@ -2074,6 +2075,10 @@ class Expressions(Dashboard.Module): radix, expression = match.groups() run('set output-radix {}'.format(radix)) value = format_value(gdb.parse_and_eval(expression)) + changed = self.previous_values.get(expression, '') != value + self.previous_values[expression] = value + if changed: + value = ansi(value, R.style_selected_1) except gdb.error as e: value = ansi(e, R.style_error) finally: @@ -2114,6 +2119,7 @@ class Expressions(Dashboard.Module): def watch(self, arg): if arg: self.table.add(arg) + self.previous_values[arg] = '' else: raise Exception('Specify an expression') @@ -2121,6 +2127,7 @@ class Expressions(Dashboard.Module): if arg: try: self.table.remove(arg) + self.previous_values.pop(arg, None) except: raise Exception('Expression not watched') else: @@ -2128,6 +2135,7 @@ class Expressions(Dashboard.Module): def clear(self, arg): self.table.clear() + self.previous_values.clear() @staticmethod def get_default_radix(): From c44c49be870c7d6bcc5adf4c84c15f357668cac4 Mon Sep 17 00:00:00 2001 From: Andrea Cardaci Date: Thu, 19 Mar 2020 14:28:01 +0100 Subject: [PATCH 2/2] Clean up existing ANSI style before applying the new --- .gdbinit | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gdbinit b/.gdbinit index 3cfc3d6..a40832a 100644 --- a/.gdbinit +++ b/.gdbinit @@ -223,6 +223,8 @@ def run(command): def ansi(string, style): if R.ansi: + # clean up existing style before applying the new + string = re.sub('\x1b\[[0-9;:]+m', '', str(string)) return '\x1b[{}m{}\x1b[0m'.format(style, string) else: return string