mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 19:50:13 +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>
|
2020-11-23 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
* gdb.ada/enum_idx_packed.exp: Limit setup_kfail to gnat 9 and 10.
|
* 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]
|
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
|
fail $message
|
||||||
} else {
|
} else {
|
||||||
pass $message
|
pass $message
|
||||||
|
Reference in New Issue
Block a user