mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-09 03:51:08 +08:00
improve fscript debugger
This commit is contained in:
parent
08c538f656
commit
c9256b4810
@ -1,4 +1,7 @@
|
|||||||
# 最新动态
|
# 最新动态
|
||||||
|
2022/06/07
|
||||||
|
* 完善fscript调试器(感谢兆坤提供补丁)。
|
||||||
|
|
||||||
2022/06/07
|
2022/06/07
|
||||||
* combo box 增加theme\_of\_popup属性。
|
* combo box 增加theme\_of\_popup属性。
|
||||||
* 增加文档 [如何设置下拉选择框 (combo box) 弹出窗口/列表项的样式](how_to_set_style_of_combo_box_item.md)
|
* 增加文档 [如何设置下拉选择框 (combo box) 弹出窗口/列表项的样式](how_to_set_style_of_combo_box_item.md)
|
||||||
|
@ -749,6 +749,8 @@ static ret_t debugger_fscript_before_exec_func(debugger_t* debugger, int32_t lin
|
|||||||
bool_t paused = debugger_fscript_should_pause(d, line);
|
bool_t paused = debugger_fscript_should_pause(d, line);
|
||||||
if (paused) {
|
if (paused) {
|
||||||
paused = debugger_fscript_emit_breaked(debugger, line);
|
paused = debugger_fscript_emit_breaked(debugger, line);
|
||||||
|
} else {
|
||||||
|
d->prev_breaked_line = -1;
|
||||||
}
|
}
|
||||||
debugger_fscript_unlock(debugger);
|
debugger_fscript_unlock(debugger);
|
||||||
|
|
||||||
|
@ -395,6 +395,61 @@ TEST(Debugger, callstack2) {
|
|||||||
str_reset(&str);
|
str_reset(&str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Debugger, break_point) {
|
||||||
|
const char* code =
|
||||||
|
"function foo(a, b){\n"
|
||||||
|
"define_param(\"a\")\n"
|
||||||
|
"define_param(\"b\")\n"
|
||||||
|
"return ((a + b))\n"
|
||||||
|
"}\n"
|
||||||
|
"foo(123, 456)\n"
|
||||||
|
"foo(123, 456)\n"
|
||||||
|
"foo(123, 456)\n"
|
||||||
|
"//code_id(\"944676fc958f236e51adb1f1ae1b799350201b00b7e81219e7a41b5fae5f8aa8\")";
|
||||||
|
str_t str;
|
||||||
|
str_init(&str, 100);
|
||||||
|
debugger_global_init();
|
||||||
|
|
||||||
|
tk_object_t* obj = object_default_create();
|
||||||
|
fscript_t* fscript = fscript_create(obj, code);
|
||||||
|
tk_thread_t* thread = tk_thread_create(fscript_thread_entry, fscript);
|
||||||
|
|
||||||
|
debugger_server_tcp_init(DEBUGGER_TCP_PORT);
|
||||||
|
debugger_t* client = debugger_client_tcp_create("localhost", DEBUGGER_TCP_PORT);
|
||||||
|
ASSERT_EQ(client != NULL, TRUE);
|
||||||
|
emitter_on(EMITTER(client), DEBUGGER_RESP_MSG_BREAKED, on_debugger_client_event, &str);
|
||||||
|
emitter_on(EMITTER(client), DEBUGGER_RESP_MSG_LOG, on_debugger_client_event, &str);
|
||||||
|
emitter_on(EMITTER(client), DEBUGGER_RESP_MSG_ERROR, on_debugger_client_event, &str);
|
||||||
|
emitter_on(EMITTER(client), DEBUGGER_RESP_MSG_COMPLETED, on_debugger_client_event, &str);
|
||||||
|
|
||||||
|
debugger_server_tcp_start();
|
||||||
|
ASSERT_EQ(debugger_attach(client, DEBUGGER_LANG_FSCRIPT, fscript->code_id), RET_OK);
|
||||||
|
ASSERT_EQ(debugger_set_break_point(client, 3), RET_OK);
|
||||||
|
|
||||||
|
tk_thread_start(thread);
|
||||||
|
sleep_ms(500);
|
||||||
|
|
||||||
|
ASSERT_EQ(debugger_continue(client), RET_OK);
|
||||||
|
sleep_ms(200);
|
||||||
|
ASSERT_EQ(debugger_continue(client), RET_OK);
|
||||||
|
sleep_ms(200);
|
||||||
|
ASSERT_EQ(debugger_continue(client), RET_OK);
|
||||||
|
sleep_ms(200);
|
||||||
|
|
||||||
|
ASSERT_NE(debugger_continue(client), RET_OK);
|
||||||
|
|
||||||
|
debugger_client_wait_for_completed(client);
|
||||||
|
tk_thread_join(thread);
|
||||||
|
tk_thread_destroy(thread);
|
||||||
|
|
||||||
|
TK_OBJECT_UNREF(obj);
|
||||||
|
TK_OBJECT_UNREF(client);
|
||||||
|
debugger_server_tcp_deinit();
|
||||||
|
debugger_global_deinit();
|
||||||
|
ASSERT_STREQ(str.str, "breaked(3)breaked(3)breaked(3)completed()");
|
||||||
|
str_reset(&str);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(Debugger, step_in) {
|
TEST(Debugger, step_in) {
|
||||||
const char* code =
|
const char* code =
|
||||||
"var c = 123\n"
|
"var c = 123\n"
|
||||||
@ -524,8 +579,10 @@ TEST(Debugger, step_over) {
|
|||||||
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
||||||
sleep_ms(200);
|
sleep_ms(200);
|
||||||
|
|
||||||
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
for (uint32_t i = 0; i < 10; i++) {
|
||||||
sleep_ms(200);
|
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
||||||
|
sleep_ms(200);
|
||||||
|
}
|
||||||
|
|
||||||
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
ASSERT_EQ(debugger_step_over(client), RET_OK);
|
||||||
sleep_ms(200);
|
sleep_ms(200);
|
||||||
@ -539,8 +596,10 @@ TEST(Debugger, step_over) {
|
|||||||
debugger_server_tcp_deinit();
|
debugger_server_tcp_deinit();
|
||||||
debugger_global_deinit();
|
debugger_global_deinit();
|
||||||
ASSERT_STREQ(str.str,
|
ASSERT_STREQ(str.str,
|
||||||
"breaked(0)breaked(1)breaked(2)log(2,\"0\")log(2,\"1\")log(2,\"2\")log(2,\"3\")log("
|
"breaked(0)breaked(1)breaked(2)log(2,\"0\")breaked(2)log(2,\"1\")breaked(2)log(2,"
|
||||||
"2,\"4\")log(2,\"5\")log(2,\"6\")log(2,\"7\")log(2,\"8\")log(2,\"9\")breaked(4)log("
|
"\"2\")breaked(2)log(2,\"3\")breaked(2)log("
|
||||||
|
"2,\"4\")breaked(2)log(2,\"5\")breaked(2)log(2,\"6\")breaked(2)log(2,\"7\")breaked("
|
||||||
|
"2)log(2,\"8\")breaked(2)log(2,\"9\")breaked(4)log("
|
||||||
"4,\"10\")completed()");
|
"4,\"10\")completed()");
|
||||||
str_reset(&str);
|
str_reset(&str);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user