From owner-svn-src-all@freebsd.org Mon May 2 19:32:08 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 314DFB2A774; Mon, 2 May 2016 19:32:08 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DAD511B1F; Mon, 2 May 2016 19:32:07 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u42JW7tG012298; Mon, 2 May 2016 19:32:07 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u42JW7KD012297; Mon, 2 May 2016 19:32:07 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201605021932.u42JW7KD012297@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Mon, 2 May 2016 19:32:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r298938 - head/sys/ddb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 May 2016 19:32:08 -0000 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 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; }