summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira TAGOH <akira@tagoh.org>2011-03-22 20:20:02 +0900
committerAkira TAGOH <akira@tagoh.org>2011-03-22 20:20:02 +0900
commita9a81b1db0316a048d075a8dab8448de6888b0be (patch)
tree7cb3c8d2de99529b3df9fdf5030d007e33e36fa1
parent5cfeea47487aee87ede394720998e6e2899ce74c (diff)
add some debugging command in gdb
-rw-r--r--.gdbinit35
1 files changed, 35 insertions, 0 deletions
diff --git a/.gdbinit b/.gdbinit
index c65b309..0cafc8e 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -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)