svn commit: r298938 - head/sys/ddb
Pedro F. Giffuni
pfg at FreeBSD.org
Mon May 2 19:32:08 UTC 2016
Author: pfg
Date: Mon May 2 19:32:06 2016
New Revision: 298938
URL: https://svnweb.freebsd.org/changeset/base/298938
Log:
Enhance the ddb examine (x) command.
* Change x/a to work similar to gdb. The content of the memory is
treated as an address, printed symbolically and the address is advanced.
This way you can x/a <stack_address> and then just hit return a bunch
of times to locate useful data on the stack.
* Add x/p. The content of the memory is treated as an address and
printed as hex.
This is based on the similar commit from DragonFlyBSD without the
cosmetic changes.
Relnotes: yes
Obtained from: DragonflyBSD (Matthew Dillon)
Reference: 0624d20e86affcd708609cbf9014207537537a72
Modified:
head/sys/ddb/db_examine.c
Modified: head/sys/ddb/db_examine.c
==============================================================================
--- head/sys/ddb/db_examine.c Mon May 2 19:15:16 2016 (r298937)
+++ head/sys/ddb/db_examine.c Mon May 2 19:32:06 2016 (r298938)
@@ -89,15 +89,6 @@ db_examine(db_addr_t addr, char *fmt, in
case 'g':
size = 8;
break;
- case 'a': /* address */
- size = sizeof(void *);
- /* always forces a new line */
- if (db_print_position() != 0)
- db_printf("\n");
- db_prev = addr;
- db_printsym(addr, DB_STGY_ANY);
- db_printf(":\t");
- break;
default:
if (db_print_position() == 0) {
/* Print the address. */
@@ -108,6 +99,18 @@ db_examine(db_addr_t addr, char *fmt, in
width = size * 4;
switch (c) {
+ case 'a': /* address */
+ size = sizeof(void *);
+ value = db_get_value(addr, size, TRUE);
+ addr += size;
+ db_printsym(value, DB_STGY_ANY);
+ break;
+ case 'p':
+ size = sizeof(void *);
+ value = db_get_value(addr, size, TRUE);
+ addr += size;
+ db_printf("%p", (void *)value);
+ break;
case 'r': /* signed, current radix */
value = db_get_value(addr, size, true);
addr += size;
@@ -173,7 +176,7 @@ db_examine(db_addr_t addr, char *fmt, in
default:
break;
}
- if (db_print_position() != 0)
+ if (db_print_position() != 0 || c == 'a' || c == 'p')
db_end_line(1);
break;
}
More information about the svn-src-head
mailing list