فهرست منبع

add quit for pdb

lyon 4 سال پیش
والد
کامیت
60bc061789

+ 3 - 0
package/PikaStdLib/PikaDebug.py

@@ -1,6 +1,9 @@
 from PikaObj import *
 
 class Debuger(TinyObj):
+    def __init__():
+        pass
+
     def set_trace():
         pass
     

+ 19 - 3
package/PikaStdLib/PikaDebuger_Debuger.c

@@ -6,7 +6,10 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
                                                        char* input_line) {
     /* continue */
     if (strEqu("c", input_line)) {
-        /* exit pika shell */
+        return SHELL_STATE_EXIT;
+    }
+    /* next */
+    if (strEqu("n", input_line)) {
         return SHELL_STATE_EXIT;
     }
     /* launch shell */
@@ -15,6 +18,11 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
         pikaScriptShell(__pikaMain);
         return SHELL_STATE_CONTINUE;
     }
+    /* quit */
+    if (strEqu("q", input_line)) {
+        obj_setInt(self, "enable", 0);
+        return SHELL_STATE_EXIT;
+    }
     /* print */
     if (strIsStartWith(input_line, "p ")) {
         char* path = input_line + 2;
@@ -25,13 +33,21 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
         arg_deinit(asm_buff);
         return SHELL_STATE_CONTINUE;
     }
-    __platform_printf("[error]: commond no found.\r\n");
+    obj_run(__pikaMain, input_line);
     return SHELL_STATE_CONTINUE;
 }
 
+void PikaDebug_Debuger___init__(PikaObj* self) {
+    /* global enable contral */
+    obj_setInt(self, "enable", 1);
+}
+
 void PikaDebug_Debuger_set_trace(PikaObj* self) {
+    if (!obj_getInt(self, "enable")) {
+        return;
+    }
     struct shell_config cfg = {
         .prefix = "(pika-debug) ",
     };
-    obj_shellLineProcess(__pikaMain, __obj_shellLineHandler_debuger, &cfg);
+    obj_shellLineProcess(self, __obj_shellLineHandler_debuger, &cfg);
 }

+ 3 - 0
port/linux/package/pikascript/PikaDebug.py

@@ -1,6 +1,9 @@
 from PikaObj import *
 
 class Debuger(TinyObj):
+    def __init__():
+        pass
+
     def set_trace():
         pass
     

+ 1 - 1
port/linux/package/pikascript/main.py

@@ -12,5 +12,5 @@ i = 0
 while i < 10:
     i = i + 1
     print('i :' + str(i))
-#    pkdb.set_trace()
+    # pkdb.set_trace()
 

+ 19 - 3
port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaDebuger_Debuger.c

@@ -6,7 +6,10 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
                                                        char* input_line) {
     /* continue */
     if (strEqu("c", input_line)) {
-        /* exit pika shell */
+        return SHELL_STATE_EXIT;
+    }
+    /* next */
+    if (strEqu("n", input_line)) {
         return SHELL_STATE_EXIT;
     }
     /* launch shell */
@@ -15,6 +18,11 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
         pikaScriptShell(__pikaMain);
         return SHELL_STATE_CONTINUE;
     }
+    /* quit */
+    if (strEqu("q", input_line)) {
+        obj_setInt(self, "enable", 0);
+        return SHELL_STATE_EXIT;
+    }
     /* print */
     if (strIsStartWith(input_line, "p ")) {
         char* path = input_line + 2;
@@ -25,13 +33,21 @@ static enum shell_state __obj_shellLineHandler_debuger(PikaObj* self,
         arg_deinit(asm_buff);
         return SHELL_STATE_CONTINUE;
     }
-    __platform_printf("[error]: commond no found.\r\n");
+    obj_run(__pikaMain, input_line);
     return SHELL_STATE_CONTINUE;
 }
 
+void PikaDebug_Debuger___init__(PikaObj* self) {
+    /* global enable contral */
+    obj_setInt(self, "enable", 1);
+}
+
 void PikaDebug_Debuger_set_trace(PikaObj* self) {
+    if (!obj_getInt(self, "enable")) {
+        return;
+    }
     struct shell_config cfg = {
         .prefix = "(pika-debug) ",
     };
-    obj_shellLineProcess(__pikaMain, __obj_shellLineHandler_debuger, &cfg);
+    obj_shellLineProcess(self, __obj_shellLineHandler_debuger, &cfg);
 }