diff options
author | Akira TAGOH <akira@tagoh.org> | 2011-03-22 20:20:02 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2011-03-22 20:20:02 +0900 |
commit | a9a81b1db0316a048d075a8dab8448de6888b0be (patch) | |
tree | 7cb3c8d2de99529b3df9fdf5030d007e33e36fa1 | |
parent | 5cfeea47487aee87ede394720998e6e2899ce74c (diff) |
add some debugging command in gdb
-rw-r--r-- | .gdbinit | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -76,6 +76,10 @@ define _sethgquarkinfo set $_idx = ($_value & (((1 << ($_hg_v_bit_idx23-$_hg_v_bit_idx00+1)) - 1) << $_hg_v_bit_idx00)) >> $_hg_v_bit_idx00 end +define _sethgallocatorinfo + set $_block_size = 64 +end + define hgquarkinfo _sethgquarkinfo $arg0 @@ -181,6 +185,37 @@ define hgquarkinfo end end +define hggetblock + _sethgallocatorinfo + set $_heaps = $arg0 + set $_page = $arg1 + set $_idx = $arg2 + set $_block = (hg_allocator_block_t *)((hg_quark_t)$_heaps[$_page] + (($_idx - 1) * $_block_size)) + printf "(hg_allocator_block_t *) %p\n", $_block +end + +define hggetobj + hggetblock $arg0 $arg1 $arg2 + set $_obj = (hg_pointer_t)((hg_char_t *)($_block) + ((sizeof (hg_allocator_block_t) + (sizeof (void *)) - 1) & ~((sizeof (void *)) - 1))) + printf "(hg_pointer_t) %p\n", $_obj +end + +define hgquarkgetblock + _sethgquarkinfo $arg0 + call hg_mem_spool_get($_memid) + set $_mem = $ + set $_heaps = ((hg_allocator_private_t *)$_mem->data)->heaps + hggetblock $_heaps $_page $_idx +end + +define hgquarkgetobj + _sethgquarkinfo $arg0 + call hg_mem_spool_get($_memid) + set $_mem = $ + set $_heaps = ((hg_allocator_private_t *)$_mem->data)->heaps + hggetobj $heaps $_page $_idx +end + define _hggetmemobj set $_obj = (HgMemObject *)($arg0) if ($_obj->magic != 0x48474d4f) |