Skip to content

Instantly share code, notes, and snippets.

@darnaut
Created August 28, 2014 04:27
Show Gist options
  • Save darnaut/1d39b74a2a3311fb795e to your computer and use it in GitHub Desktop.
Save darnaut/1d39b74a2a3311fb795e to your computer and use it in GitHub Desktop.
GDB command implementing malloc_stats()
define my_malloc_stats
set $in_use = mp_.mmapped_mem
set $system = mp_.mmapped_mem
set $arena = &main_arena
set $arena_n = 0
# mALLINFo
while $arena
set $system = $system + $arena->system_mem
set $avail = (($arena->top)->size & ~(0x1 | 0x2 | 0x4))
set $fastavail = 0
set $i = 0
# traverse fastbins
while $i < 10
set $p = (($arena)->fastbinsY[$i])
while $p
set $fastavail = $fastavail + (($p)->size & ~(0x1 | 0x2 | 0x4))
set $p = $p->fd
end
set $i = $i + 1
end
set $avail = $avail + $fastavail
# traverse regular bins
set $i = 1
while $i < 128
set $b = (mbinptr) (((char *) &(($arena)->bins[(($i) - 1) * 2])) - 16)
set $p = $b->bk
while $p != $b
set $avail = $avail + (($p)->size & ~(0x1 | 0x2 | 0x4))
set $p = $p->bk
end
set $i = $i + 1
end
printf "Arena: %u\nsystem bytes = %10lu\nin use bytes = %10lu\n", $arena_n, $arena->system_mem, ($arena->system_mem - $avail)
set $in_use = $in_use + ($arena->system_mem - $avail)
set $arena = $arena->next
if $arena == &main_arena
loop_break
end
set $arena_n = $arena_n + 1
end
printf "Total:\nsystem bytes = %10lu\nin use bytes = %10lu\n", $system, $in_use
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment