A Total Overhaul on the Lunaix's Virtual Memory Model (#26)
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / commands.py
1 from gdb import Command, COMMAND_USER
2
3 import argparse
4 import shlex
5
6 class LunadbgCommand(Command):
7     def __init__(self, name: str) -> None:
8         super().__init__(name, COMMAND_USER)
9         self._parser = argparse.ArgumentParser()
10
11     def _parse_args(self, gdb_argstr: str):
12         try:
13             args, argv = self._parser.parse_known_args(shlex.split(gdb_argstr), None)
14             if argv:
15                 print('unrecognized arguments: %s'%(' '.join(argv)))
16             else:
17                 return args
18         except SystemExit:
19             pass 
20         return None
21     
22     def invoke(self, argument: str, from_tty: bool) -> None:
23         parsed = self._parse_args(argument)
24         if not parsed:
25             return
26         self.on_execute(parsed, argument, from_tty)
27     
28     def on_execute(self, parsed, gdb_args, from_tty):
29         raise NotImplementedError()