mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
gdb/guile: improve the errors when creating breakpoints
When creating a breakpoint using the guile API, if an invalid breakpoint type number was used then the error would report the wrong argument position, like this: (gdb) guile (define wp2 (make-breakpoint "result" #:wp-class WP_WRITE #:type 999)) ERROR: In procedure make-breakpoint: ERROR: In procedure gdbscm_make_breakpoint: Out of range: invalid breakpoint type in position 3: 999 Error while executing Scheme code. (gdb) The 'position 3' here is actually pointing at WP_WRITE, when it should say 'position 5' and point to the 999. This commit fixes this. However, you also get errors like this: (gdb) guile (define wp2 (make-breakpoint "result" #:wp-class WP_WRITE #:type BP_NONE)) ERROR: In procedure make-breakpoint: ERROR: In procedure gdbscm_make_breakpoint: Out of range: invalid breakpoint type in position 3: 0 Error while executing Scheme code. The BP_NONE is a valid breakpoint type, it's just not valid for creating breakpoints through the 'make-breakpoint' API. The use of '0' in the error message (which is the value of BP_NONE) is not great. This commit changes the error in this case to: (gdb) guile (define wp2 (make-breakpoint "result" #:wp-class WP_WRITE #:type BP_NONE)) ERROR: In procedure make-breakpoint: ERROR: In procedure gdbscm_make_breakpoint: unsupported breakpoint type in position 5: "BP_NONE" Error while executing Scheme code. Which seems better; we now use the name of the type, and report that this type is unsupported. gdb/ChangeLog: * guile/scm-breakpoint.c (gdbscm_make_breakpoint): Split the error for invalid breakpoint numbers, and unsupported breakpoint numbers. gdb/testsuite/ChangeLog: * gdb.guile/scm-breakpoint.exp (test_watchpoints): Add new tests.
This commit is contained in:
@ -387,8 +387,19 @@ gdbscm_make_breakpoint (SCM location_scm, SCM rest)
|
||||
_("invalid watchpoint class"));
|
||||
}
|
||||
break;
|
||||
case bp_none:
|
||||
case bp_hardware_watchpoint:
|
||||
case bp_read_watchpoint:
|
||||
case bp_access_watchpoint:
|
||||
{
|
||||
const char *type_name = bpscm_type_to_string (type);
|
||||
gdbscm_misc_error (FUNC_NAME, type_arg_pos,
|
||||
gdbscm_scm_from_c_string (type_name),
|
||||
_("unsupported breakpoint type"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
gdbscm_out_of_range_error (FUNC_NAME, access_type_arg_pos,
|
||||
gdbscm_out_of_range_error (FUNC_NAME, type_arg_pos,
|
||||
scm_from_int (type),
|
||||
_("invalid breakpoint type"));
|
||||
}
|
||||
|
Reference in New Issue
Block a user