diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-06-15 10:22:57 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-06-15 10:22:57 +0200 |
| commit | 9fb4af5d56fcd0568137c5bf431f2f72807938a5 (patch) | |
| tree | cb894541787d458586c4519a22243807d0a4799a /libs/kstd/gdb | |
| parent | 32fa8e40c845755b3b9645fb01b4790e989bf9a9 (diff) | |
| download | kernel-9fb4af5d56fcd0568137c5bf431f2f72807938a5.tar.xz kernel-9fb4af5d56fcd0568137c5bf431f2f72807938a5.zip | |
kstd/debug: fix string pretty printer
Diffstat (limited to 'libs/kstd/gdb')
| -rw-r--r-- | libs/kstd/gdb/__init__.py | 2 | ||||
| -rw-r--r-- | libs/kstd/gdb/string.py | 16 |
2 files changed, 7 insertions, 11 deletions
diff --git a/libs/kstd/gdb/__init__.py b/libs/kstd/gdb/__init__.py index c5d1e53..4c4b341 100644 --- a/libs/kstd/gdb/__init__.py +++ b/libs/kstd/gdb/__init__.py @@ -12,7 +12,7 @@ from .smart_pointers import ( def build_pretty_printers(): pp = gdb.printing.RegexpCollectionPrettyPrinter("kstd") pp.add_printer("vector", "^kstd::vector<.*>$", KstdVectorPrinter) - pp.add_printer("string", "^kstd::string$", KstdStringPrinter) + pp.add_printer("string", "^kstd::basic_string<.*>$", KstdStringPrinter) pp.add_printer("unique_ptr", "^kstd::unique_ptr<.*>$", KstdUniquePtrPrinter) pp.add_printer("shared_ptr", "^kstd::shared_ptr<.*>$", KstdSharedPtrPrinter) pp.add_printer("observer_ptr", "^kstd::observer_ptr<.*>$", KstdObserverPtrPrinter) diff --git a/libs/kstd/gdb/string.py b/libs/kstd/gdb/string.py index 73c22d6..b60cbe6 100644 --- a/libs/kstd/gdb/string.py +++ b/libs/kstd/gdb/string.py @@ -5,21 +5,17 @@ class KstdStringPrinter(gdb.ValuePrinter): def __init__(self, val): self.__val = val + self.__data = val["m_data"] + self.__length = val["m_length"] def to_string(self): - storage = self.__val["m_storage"] - storage_size = int(storage["m_size"]) - - if storage_size <= 0: + if int(self.__length) <= 0: return '""' - data_pointer = storage["m_data"] - string_length = storage_size - 1 - try: - if hasattr(data_pointer, "lazy_string"): - return data_pointer.lazy_string(encoding="utf-8", length=string_length) - return data_pointer.string(encoding="utf-8", length=string_length) + if hasattr(self.__data, "lazy_string"): + return self.__data.lazy_string(encoding="utf-8", length=self.__length) + return self.__data.string(encoding="utf-8", length=self.__length) except gdb.error: return "<unreadable memory>" |
