aboutsummaryrefslogtreecommitdiff
path: root/libs/kstd/gdb/string.py
diff options
context:
space:
mode:
Diffstat (limited to 'libs/kstd/gdb/string.py')
-rw-r--r--libs/kstd/gdb/string.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/libs/kstd/gdb/string.py b/libs/kstd/gdb/string.py
new file mode 100644
index 0000000..8230b21
--- /dev/null
+++ b/libs/kstd/gdb/string.py
@@ -0,0 +1,27 @@
+import gdb
+
+
+class KstdStringPrinter:
+
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ storage = self.val["m_storage"]
+ storage_size = int(storage["m_size"])
+
+ if storage_size <= 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)
+ except gdb.error:
+ return "<unreadable memory>"
+
+ def display_hint(self):
+ return "string"