from gdb import Command, COMMAND_USER
import argparse
+import shlex
+import traceback
class LunadbgCommand(Command):
def __init__(self, name: str) -> None:
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