blob: 74b1407f3e9dc4ffa350fc1ce7dcfc9adf3b01eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import gdb
from teachos import format_size
class KapiMemoryChunkPrinter(gdb.ValuePrinter):
def __init__(self, val: gdb.Value, typename="chunk"):
self.__val = val
try:
self.__number = int(val["m_number"])
except gdb.error:
self.__number = "<number unreadable>"
try:
self.__size = int(gdb.parse_and_eval(f"{val.type.name}::size")["value"])
except gdb.error:
self.__size = "<size unreadable>"
self.__typename = typename
def to_string(self):
return f"{self.__typename} {self.__number} of size {format_size(self.__size)}"
def children(self):
yield ("number", self.__number)
yield ("size", self.__size)
def display_hint(self):
return None
class KapiMemoryFramePrinter(KapiMemoryChunkPrinter):
def __init__(self, val):
super().__init__(val, "frame")
class KapiMemoryPagePrinter(KapiMemoryChunkPrinter):
def __init__(self, val):
super().__init__(val, "page")
|