diff options
author | Tom de Vries <tdevries@suse.de> | 2021-09-29 15:53:52 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-09-29 15:53:52 +0200 |
commit | 6767cc642cffc86848887f9bdd1ffe57d93ef563 (patch) | |
tree | 924a860dffbe3d72c91abf776237373819ff2194 | |
parent | f15ec499bf8c5328679e3f745b78ef03b83d6510 (diff) | |
download | gdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.zip gdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.tar.gz gdb-6767cc642cffc86848887f9bdd1ffe57d93ef563.tar.bz2 |
[gdb/testsuite] Fix gdb.python/py-breakpoint.exp with python 2
With a gdb build using python 2.7, I run into:
...
(gdb) python \
gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))^M
File "<string>", line 1^M
gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))^M
^^M
SyntaxError: invalid syntax^M
Error while executing Python code.^M
(gdb) FAIL: gdb.python/py-breakpoint.exp: test_bkpt_auto_disable: \
trap breakpoint_modified event
...
This is caused by the following:
- a lambda function body needs to be an expression
- in python 2, print is a statement, while in python 3 it's a function
- a function call is an expression, and a statement is not.
Fix this by defining a function print_bp_enabled:
...
def print_bp_enabled (bp):
print (bp.enabled)
end
...
and using that instead.
Tested on x86_64-linux.
-rw-r--r-- | gdb/testsuite/gdb.python/py-breakpoint.exp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp index 857480d..bd99452 100644 --- a/gdb/testsuite/gdb.python/py-breakpoint.exp +++ b/gdb/testsuite/gdb.python/py-breakpoint.exp @@ -816,7 +816,15 @@ proc_with_prefix test_bkpt_auto_disable { } { set mult_line [gdb_get_line_number "Break at multiply."] gdb_breakpoint ${mult_line} gdb_test_no_output "enable count 1 2" "one shot enable" - gdb_test_no_output "python gdb.events.breakpoint_modified.connect(lambda bp: print(bp.enabled))" \ + # Python 2 doesn't support print in lambda function, so use a named + # function instead. + gdb_test_multiline "Define print_bp_enabled" \ + "python" "" \ + "def print_bp_enabled (bp):" "" \ + " print (bp.enabled)" "" \ + "end" "" + gdb_test_no_output \ + "python gdb.events.breakpoint_modified.connect(print_bp_enabled)" \ "trap breakpoint_modified event" gdb_test "continue" "False.*" "auto-disabling after enable count reached" } |