Extended the "heap" debugger command to allow specifying the address of
the heap to print infos about. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26968 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -345,6 +345,8 @@ static int
|
|||||||
dump_heap_list(int argc, char **argv)
|
dump_heap_list(int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (argc == 2) {
|
if (argc == 2) {
|
||||||
|
uint64 heapAddress;
|
||||||
|
|
||||||
if (strcmp(argv[1], "grow") == 0) {
|
if (strcmp(argv[1], "grow") == 0) {
|
||||||
// only dump dedicated grow heap info
|
// only dump dedicated grow heap info
|
||||||
dprintf("dedicated grow heap:\n");
|
dprintf("dedicated grow heap:\n");
|
||||||
@@ -352,6 +354,8 @@ dump_heap_list(int argc, char **argv)
|
|||||||
} else if (strcmp(argv[1], "stats") == 0) {
|
} else if (strcmp(argv[1], "stats") == 0) {
|
||||||
for (uint32 i = 0; i < HEAP_CLASS_COUNT; i++)
|
for (uint32 i = 0; i < HEAP_CLASS_COUNT; i++)
|
||||||
dump_allocator(sHeaps[i], false, false);
|
dump_allocator(sHeaps[i], false, false);
|
||||||
|
} else if (evaluate_debug_expression(argv[1], &heapAddress, true)) {
|
||||||
|
dump_allocator((heap_allocator*)(addr_t)heapAddress, true, true);
|
||||||
} else
|
} else
|
||||||
print_debugger_command_usage(argv[0]);
|
print_debugger_command_usage(argv[0]);
|
||||||
|
|
||||||
@@ -1661,10 +1665,13 @@ heap_init(addr_t base, size_t size)
|
|||||||
|
|
||||||
// set up some debug commands
|
// set up some debug commands
|
||||||
add_debugger_command_etc("heap", &dump_heap_list,
|
add_debugger_command_etc("heap", &dump_heap_list,
|
||||||
"Dump infos about the kernel heap(s)", "[(\"grow\" | \"stats\")]\n"
|
"Dump infos about the kernel heap(s)",
|
||||||
|
"[(\"grow\" | \"stats\" | <heap>)]\n"
|
||||||
"Dump infos about the kernel heap(s). If \"grow\" is specified, only\n"
|
"Dump infos about the kernel heap(s). If \"grow\" is specified, only\n"
|
||||||
"infos about the dedicated grow heap are printed. If \"stats\" is\n"
|
"infos about the dedicated grow heap are printed. If \"stats\" is\n"
|
||||||
"given as the argument, currently only the heap count is printed\n", 0);
|
"given as the argument, currently only the heap count is printed.\n"
|
||||||
|
"If <heap> is given, it is interpreted as the address of the heap to\n"
|
||||||
|
"print infos about.\n", 0);
|
||||||
#if KERNEL_HEAP_LEAK_CHECK
|
#if KERNEL_HEAP_LEAK_CHECK
|
||||||
add_debugger_command_etc("allocations", &dump_allocations,
|
add_debugger_command_etc("allocations", &dump_allocations,
|
||||||
"Dump current allocations",
|
"Dump current allocations",
|
||||||
|
|||||||
Reference in New Issue
Block a user