gdb/guile: improve the errors when creating breakpoints
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 10 May 2021 08:53:52 +0000 (09:53 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 25 Jun 2021 17:22:03 +0000 (18:22 +0100)
commit81b327aadd3454a5c855e10180b30b6cafe5fc84
tree635e9620afd2ab37246a5d4a4d2fba235d9a34fd
parent202054aea670db6441f6b04c59ff58e6c3a1f8ca
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.
gdb/ChangeLog
gdb/guile/scm-breakpoint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.guile/scm-breakpoint.exp