Check for uninitialized data and print a message if that is the case. * ddb/db_examine.c (db_xcdump) (data_uninitialized): New variable. (db_xcdump): Check if data is uninitialized. (db_xcdump): Print a message if that is the case.
--- ddb/db_examine.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ddb/db_examine.c b/ddb/db_examine.c index 7820396..1ceff41 100644 --- a/ddb/db_examine.c +++ b/ddb/db_examine.c @@ -458,6 +458,7 @@ db_xcdump(addr, size, count, task) db_addr_t off; char *name; char data[DB_XCDUMP_NC]; + boolean_t data_uninitialized = TRUE; db_find_task_sym_and_offset(addr, &name, &off, task); for (n = count*size; n > 0; n -= bcount) { @@ -474,7 +475,8 @@ db_xcdump(addr, size, count, task) if (!DB_CHECK_ACCESS(next_page_addr, sizeof(int), task)) bcount = next_page_addr - addr; } - db_read_bytes(addr, bcount, data, DB_XCDUMP_NC, task); + if (db_read_bytes(addr, bcount, data, DB_XCDUMP_NC, task) == 0) + data_uninitialized = FALSE; for (i = 0; i < bcount && off != 0; i += size) { if (i % 4 == 0) db_printf(" "); @@ -488,11 +490,15 @@ db_xcdump(addr, size, count, task) ""); bcount = i; db_printf("%s*", (size != 1)? " ": ""); - for (i = 0; i < bcount; i++) { - value = data[i]; - db_printf("%c", (value >= ' ' && value <= '~')? value: '.'); + if (!data_uninitialized) { + for (i = 0; i < bcount; i++) { + value = data[i]; + db_printf("%c", (value >= ' ' && value <= '~')? value: '.'); + } + db_printf("*\n"); } - db_printf("*\n"); + else + db_printf("\nuninitialized data\n"); } return(addr); } -- 1.8.1.4