Skip to content
Snippets Groups Projects
Commit 1937c02e authored by Avi Kivity's avatar Avi Kivity
Browse files

scripts: add debugger command to dump the free memory heap

(gdb) osv heap
parent 2a26a0ed
No related branches found
No related tags found
No related merge requests found
...@@ -38,3 +38,29 @@ class Connect(gdb.Command): ...@@ -38,3 +38,29 @@ class Connect(gdb.Command):
gdb.execute('target remote :1234') gdb.execute('target remote :1234')
Connect() Connect()
class osv(gdb.Command):
def __init__(self):
gdb.Command.__init__(self, 'osv',
gdb.COMMAND_USER, gdb.COMPLETE_COMMAND, True)
class osv_heap(gdb.Command):
def __init__(self):
gdb.Command.__init__(self, 'osv heap',
gdb.COMMAND_USER, gdb.COMPLETE_NONE)
def invoke(self, arg, from_tty):
free_page_ranges = gdb.lookup_global_symbol('memory::free_page_ranges').value()
p = free_page_ranges['tree_']['data_']['node_plus_pred_']
p = p['header_plus_size_']['header_']['parent_']
self.show(p)
def show(self, node):
if long(node) == 0:
return
page_range = node.cast(gdb.lookup_type('void').pointer()) - 8
page_range = page_range.cast(gdb.lookup_type('memory::page_range').pointer())
self.show(node['left_'])
print page_range, page_range['size']
self.show(node['right_'])
osv()
osv_heap()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment