aboutsummaryrefslogtreecommitdiff
path: root/libs/kstd/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'libs/kstd/gdb')
-rw-r--r--libs/kstd/gdb/__init__.py2
-rw-r--r--libs/kstd/gdb/string.py16
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>"