aboutsummaryrefslogtreecommitdiff
path: root/scripts/gdb/teachos.py
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-05-07 09:12:05 +0000
committerFelix Morgner <felix.morgner@ost.ch>2026-05-07 09:12:05 +0000
commit0ea43527332b7e5f1cfec6007506aa54e8f628cb (patch)
tree4d8ba0bd085f7480af728f8e637ab9a1170f9aff /scripts/gdb/teachos.py
parent22d0be58316125da668302370a1bebc6655880ea (diff)
downloadkernel-0ea43527332b7e5f1cfec6007506aa54e8f628cb.tar.xz
kernel-0ea43527332b7e5f1cfec6007506aa54e8f628cb.zip
debug: enable libstdc++ helpers
Diffstat (limited to 'scripts/gdb/teachos.py')
-rw-r--r--scripts/gdb/teachos.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/gdb/teachos.py b/scripts/gdb/teachos.py
new file mode 100644
index 0000000..355f6b9
--- /dev/null
+++ b/scripts/gdb/teachos.py
@@ -0,0 +1,47 @@
+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") \ No newline at end of file