import sys import os import gdb import importlib.util script_path = os.path.abspath(__file__) script_root = os.path.dirname(script_path) repo_root = os.path.dirname(os.path.dirname(script_root)) if script_root not in sys.path: sys.path.insert(0, script_root) from teachos.dump_mb2i import DumpMB2I components = { "kstd": "libs/kstd/gdb", "kapi": "kapi/gdb", } for component, path in components.items(): full_path = os.path.join(repo_root, *path.split("/")) init_file = os.path.join(full_path, "__init__.py") if os.path.isfile(init_file): try: spec = importlib.util.spec_from_file_location(component, init_file) module = importlib.util.module_from_spec(spec) sys.modules[component] = module spec.loader.exec_module(module) if hasattr(module, "register_printers"): module.register_printers(gdb.current_objfile()) gdb.write(f"Info: Registered pretty printers for '{component}'.\n") else: gdb.write( f"Warning: '{component}' does not have 'register_printers' function\n" ) except Exception as e: gdb.write(f"Warning: Failed to load '{component}' pretty printers: {e}\n") else: gdb.write(f"Warning: GDB extension init not found: '{init_file}'\n") gdb.write("Info: Loaded TeachOS pretty printers.\n") DumpMB2I() gdb.write("Info: Loaded TeachOS tools.\n")