add vm probing for x86_64
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / commands.py
index 9df5983dbe242b795d94ecd32d0c8f6fb302e62f..1e4d425375c3c76e82d005d538ea03c8113e9513 100644 (file)
@@ -1,6 +1,8 @@
 from gdb import Command, COMMAND_USER
 
 import argparse
+import shlex
+import traceback
 
 class LunadbgCommand(Command):
     def __init__(self, name: str) -> None:
@@ -8,10 +10,25 @@ class LunadbgCommand(Command):
         self._parser = argparse.ArgumentParser()
 
     def _parse_args(self, gdb_argstr: str):
-        args, argv = self._parser.parse_known_args(gdb_argstr.strip().split(' '), None)
-        if argv:
-            print('unrecognized arguments: %s'%(' '.join(argv)))
-            print(self._parser.format_usage())
-            print(self._parser.format_help())
-            return None
-        return args
\ No newline at end of file
+        try:
+            args, argv = self._parser.parse_known_args(shlex.split(gdb_argstr), None)
+            if argv:
+                print('unrecognized arguments: %s'%(' '.join(argv)))
+            else:
+                return args
+        except SystemExit:
+            pass 
+        return None
+    
+    def invoke(self, argument: str, from_tty: bool) -> None:
+        try:
+            parsed = self._parse_args(argument)
+            if not parsed:
+                return
+            self.on_execute(parsed, argument, from_tty)
+        except Exception as e:
+            traceback.print_exception(e)
+
+
+    def on_execute(self, parsed, gdb_args, from_tty):
+        raise NotImplementedError()
\ No newline at end of file