mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
gdb/testsuite: show evaluation errors in gdb_assert
Let's say you put this gdb_assert in a test: gdb_assert "some invalid tcl code" You just get: FAIL: gdb.base/template.exp: some invalid tcl code That's not very easy to debug, since you don't know what's invalid in your code. Change gdb_assert to print the error message when catch's return code is 1 (TCL_ERROR). The "warning" is shown both on stdout and in the log file. Mark the test as unresolved, because the evaluation error means we couldn't reach a valid pass/fail conclusion. gdb/testsuite/ChangeLog: * lib/gdb.exp (gdb_assert): Show error message on error. Change-Id: Ie6477859554e909ed8d07fb2769c6f2f55e7cce6
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
2020-11-23 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* lib/gdb.exp (gdb_assert): Show error message on error.
|
||||
|
||||
2020-11-23 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* gdb.ada/enum_idx_packed.exp: Limit setup_kfail to gnat 9 and 10.
|
||||
|
@ -1728,7 +1728,14 @@ proc gdb_assert { condition {message ""} } {
|
||||
}
|
||||
|
||||
set code [catch {uplevel 1 expr $condition} res]
|
||||
if {$code != 0 || !$res} {
|
||||
if {$code == 1} {
|
||||
# If code is 1 (TCL_ERROR), it means evaluation failed and res contains
|
||||
# an error message. Print the error message, and set res to 0 since we
|
||||
# want to return a boolean.
|
||||
warning "While evaluating expression in gdb_assert: $res"
|
||||
unresolved $message
|
||||
set res 0
|
||||
} elseif { !$res } {
|
||||
fail $message
|
||||
} else {
|
||||
pass $message
|
||||
|
Reference in New Issue
Block a user