aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/printcmd.c17
2 files changed, 17 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 53c6145..d99913c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-25 Phil Muldoon <pmuldoon@redhat.com>
+
+ * printcmd.c (print_variable_and_value): Print error message on
+ caught exception.
+
2010-06-25 Ulrich Weigand <uweigand@de.ibm.com>
* dwarf2expr.h (struct dwarf_value_location): Use ULONGEST as type
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 430ccee..5ffa099 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1942,17 +1942,24 @@ print_variable_and_value (const char *name, struct symbol *var,
struct frame_info *frame,
struct ui_file *stream, int indent)
{
- struct value *val;
- struct value_print_options opts;
+ volatile struct gdb_exception except;
if (!name)
name = SYMBOL_PRINT_NAME (var);
fprintf_filtered (stream, "%s%s = ", n_spaces (2 * indent), name);
+ TRY_CATCH (except, RETURN_MASK_ERROR)
+ {
+ struct value *val;
+ struct value_print_options opts;
- val = read_var_value (var, frame);
- get_user_print_options (&opts);
- common_val_print (val, stream, indent, &opts, current_language);
+ val = read_var_value (var, frame);
+ get_user_print_options (&opts);
+ common_val_print (val, stream, indent, &opts, current_language);
+ }
+ if (except.reason < 0)
+ fprintf_filtered(stream, "<error reading variable %s (%s)>", name,
+ except.message);
fprintf_filtered (stream, "\n");
}