X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b8a1bcad75628f9add4590db2bb9b8e418ee8eb..37c2b8f74c5a5733505851502282625f17435371:/lunaix-os/scripts/gdb/lunadbg/commands.py diff --git a/lunaix-os/scripts/gdb/lunadbg/commands.py b/lunaix-os/scripts/gdb/lunadbg/commands.py index f752020..1e4d425 100644 --- a/lunaix-os/scripts/gdb/lunadbg/commands.py +++ b/lunaix-os/scripts/gdb/lunadbg/commands.py @@ -1,10 +1,34 @@ -from .region_dump import MemoryRegionDump -from .proc_table_dump import ProcessDump, ProcessTableDump -from .syslog import SysLogDump +from gdb import Command, COMMAND_USER +import argparse +import shlex +import traceback -def load_commands(): - MemoryRegionDump() - ProcessTableDump() - ProcessDump() - SysLogDump() \ No newline at end of file +class LunadbgCommand(Command): + def __init__(self, name: str) -> None: + super().__init__(name, COMMAND_USER) + self._parser = argparse.ArgumentParser() + + def _parse_args(self, gdb_argstr: str): + 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