Initial version of JerryScript debugger (#1557)

The debugger supports setting breakpoints, execution control (step, next, continue)
and getting backtrace. The communication is WebSocket-based, so a browser can
communicate with JerryScript without any intermediate application.

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
JerryScript-DCO-1.0-Signed-off-by: Levente Orban orbanl@inf.u-szeged.hu
This commit is contained in:
Levente Orban
2017-02-14 15:03:01 +01:00
committed by Tilmann Scheller
parent 453066fcf1
commit 025a99ccbb
39 changed files with 4166 additions and 5 deletions
+4
View File
@@ -0,0 +1,4 @@
b do_backtrace.js:32
c
bt
c
+9
View File
@@ -0,0 +1,9 @@
Address setup: localhost:5001
Stopped at tests/debugger/do_backtrace.js:15
(jerry-debugger) Breakpoint 1 at tests/debugger/do_backtrace.js:32 (in f4)
(jerry-debugger) Stopped at breakpoint:1 tests/debugger/do_backtrace.js:32 (in f4)
(jerry-debugger) Frame 0: tests/debugger/do_backtrace.js:32 (in f4)
Frame 1: tests/debugger/do_backtrace.js:39 (in foo)
Frame 2: tests/debugger/do_backtrace.js:48 (in test)
Frame 3: tests/debugger/do_backtrace.js:60
(jerry-debugger) Connection closed.
+60
View File
@@ -0,0 +1,60 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
print("first line of code");
function f1()
{
function f2()
{
return function f3() {
a = 4;
print("funciton f3");
};
}
x =
6;
}
function f4() {
print("function f4");
}
function foo()
{
print("function foo");
var tmp = 4;
f4();
}
print ("var cat");
var cat = 'cat';
function test()
{
print("function test");
foo();
var a = 3;
var b = 5;
var c = a + b;
global_var = c;
return c;
}
var
x =
1;
test();
+7
View File
@@ -0,0 +1,7 @@
break do_break.js:28
list
b do_break.js:40
delete 1
next
next
continue
+8
View File
@@ -0,0 +1,8 @@
Address setup: localhost:5001
Stopped at tests/debugger/do_break.js:15
(jerry-debugger) Breakpoint not found
(jerry-debugger) (jerry-debugger) Breakpoint not found
(jerry-debugger) Error: Breakpoint 1 not found
(jerry-debugger) Stopped at tests/debugger/do_break.js:42
(jerry-debugger) Stopped at tests/debugger/do_break.js:43
(jerry-debugger) Connection closed.
+60
View File
@@ -0,0 +1,60 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
print("first line of code");
function f1()
{
function f2()
{
return function f3() {
a = 4;
print("funciton f3");
};
}
x =
6;
}
function f4() {
print("function f4");
}
function foo()
{
print("function foo");
var tmp = 4;
f4();
}
print ("var cat");
var cat = 'cat';
function test()
{
print("function test");
foo();
var a = 3;
var b = 5;
var c = a + b;
global_var = c;
return c;
}
var
x =
1;
test();
+2
View File
@@ -0,0 +1,2 @@
dump
c
+10
View File
@@ -0,0 +1,10 @@
Address setup: localhost:5001
Stopped at tests/debugger/do_dump.js:15
(jerry-debugger) {68: Function(byte_code_cp:0x44, source:"tests/debugger/do_dump.js", name:"f4", { Breakpoint(line:32, offset:17, active_index:-1),Breakpoint(line:31, offset:16, active_index:-1) }),
79: Function(byte_code_cp:0x4f, source:"tests/debugger/do_dump.js", name:"f1", { Breakpoint(line:17, offset:21, active_index:-1),Breakpoint(line:27, offset:22, active_index:-1) }),
102: Function(byte_code_cp:0x66, source:"tests/debugger/do_dump.js", name:"f2", { Breakpoint(line:19, offset:14, active_index:-1),Breakpoint(line:21, offset:15, active_index:-1) }),
105: Function(byte_code_cp:0x69, source:"tests/debugger/do_dump.js", name:"foo", { Breakpoint(line:35, offset:20, active_index:-1),Breakpoint(line:37, offset:21, active_index:-1),Breakpoint(line:38, offset:26, active_index:-1),Breakpoint(line:39, offset:31, active_index:-1) }),
125: Function(byte_code_cp:0x7d, source:"tests/debugger/do_dump.js", name:"f3", { Breakpoint(line:22, offset:25, active_index:-1),Breakpoint(line:23, offset:30, active_index:-1) }),
131: Function(byte_code_cp:0x83, source:"tests/debugger/do_dump.js", name:"", { Breakpoint(line:57, offset:63, active_index:-1),Breakpoint(line:42, offset:54, active_index:-1),Breakpoint(line:43, offset:59, active_index:-1),Breakpoint(line:60, offset:68, active_index:-1),Breakpoint(line:15, offset:49, active_index:-1) }),
154: Function(byte_code_cp:0x9a, source:"tests/debugger/do_dump.js", name:"test", { Breakpoint(line:45, offset:26, active_index:-1),Breakpoint(line:47, offset:27, active_index:-1),Breakpoint(line:48, offset:32, active_index:-1),Breakpoint(line:49, offset:36, active_index:-1),Breakpoint(line:50, offset:41, active_index:-1),Breakpoint(line:51, offset:46, active_index:-1),Breakpoint(line:52, offset:52, active_index:-1),Breakpoint(line:53, offset:56, active_index:-1) })}
(jerry-debugger) Connection closed.
+60
View File
@@ -0,0 +1,60 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
print("first line of code");
function f1()
{
function f2()
{
return function f3() {
a = 4;
print("funciton f3");
};
}
x =
6;
}
function f4() {
print("function f4");
}
function foo()
{
print("function foo");
var tmp = 4;
f4();
}
print ("var cat");
var cat = 'cat';
function test()
{
print("function test");
foo();
var a = 3;
var b = 5;
var c = a + b;
global_var = c;
return c;
}
var
x =
1;
test();
+8
View File
@@ -0,0 +1,8 @@
break do_step.js:25
step
backtrace
b do_step.js:26
c
s
bt
c
+12
View File
@@ -0,0 +1,12 @@
Address setup: localhost:5001
Stopped at tests/debugger/do_step.js:25
(jerry-debugger) Breakpoint 1 at tests/debugger/do_step.js:25
(jerry-debugger) Stopped at tests/debugger/do_step.js:15 (in f1)
(jerry-debugger) Frame 0: tests/debugger/do_step.js:15 (in f1)
Frame 1: tests/debugger/do_step.js:25
(jerry-debugger) Breakpoint 2 at tests/debugger/do_step.js:26
(jerry-debugger) Stopped at breakpoint:2 tests/debugger/do_step.js:26
(jerry-debugger) Stopped at tests/debugger/do_step.js:20 (in f2)
(jerry-debugger) Frame 0: tests/debugger/do_step.js:20 (in f2)
Frame 1: tests/debugger/do_step.js:26
(jerry-debugger) Connection closed.
+26
View File
@@ -0,0 +1,26 @@
// Copyright JS Foundation and other contributors, http://js.foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
function f1()
{
var i = 1;
}
function f2()
{
var y = 2;
}
f1();
f2();