From e292e2ab903d8498d666942d59ae60b770d2e4ef Mon Sep 17 00:00:00 2001 From: Daniel Balla Date: Wed, 14 Feb 2018 11:27:36 +0100 Subject: [PATCH] Multiple nexts with one command Make a next command more gdb like. If an argument is given `next 10`, it does 10 nexts. JerryScript-DCO-1.0-Signed-off-by: Daniel Balla dballa@inf.u-szeged.hu --- jerry-debugger/jerry-client-ws.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/jerry-debugger/jerry-client-ws.py b/jerry-debugger/jerry-client-ws.py index 892715e7b6..2cd8587fbf 100755 --- a/jerry-debugger/jerry-client-ws.py +++ b/jerry-debugger/jerry-client-ws.py @@ -25,6 +25,7 @@ import struct import sys import math +import time # Expected debugger protocol version. JERRY_DEBUGGER_VERSION = 1 @@ -265,7 +266,22 @@ def do_step(self, args): def do_next(self, args): """ Next breakpoint in the same context """ - self._exec_command(args, JERRY_DEBUGGER_NEXT) + if not args: + args = 0 + else: + try: + args = int(args) + if args <= 0: + raise ValueError(args) + except ValueError as val_errno: + print("Error: expected a positive integer: %s" % val_errno) + return + + args = min(args, len(self.debugger.last_breakpoint_hit.function.lines) - + self.debugger.last_breakpoint_hit.function.line) - 1 + self.debugger.repeats_remain = args + + self._exec_command("", JERRY_DEBUGGER_NEXT) self.cont = True do_n = do_next @@ -561,6 +577,7 @@ def __init__(self, address): self.src_offset_diff = 0 self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.client_socket.connect((self.host, self.port)) + self.repeats_remain = 0 self.send_message(b"GET /jerry-debugger HTTP/1.1\r\n" + b"Upgrade: websocket\r\n" + @@ -1141,7 +1158,12 @@ def main(): if debugger.display: print_source(prompt.debugger, debugger.display, 0) - prompt.cmdloop() + if debugger.repeats_remain: + prompt.do_next(debugger.repeats_remain) + time.sleep(0.1) + else: + prompt.cmdloop() + if prompt.quit: break