From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6841 invoked by alias); 26 May 2004 18:11:48 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 6807 invoked from network); 26 May 2004 18:11:46 -0000 Received: from unknown (HELO mailhost.cas.org) (134.243.50.9) by sourceware.org with SMTP; 26 May 2004 18:11:46 -0000 Received: from cas.org (pmd24awu [134.243.216.44]) by mailhost.cas.org (8.12.10/8.12.10/CAS_MAIL_HUB-4.6) with ESMTP id i4QIAZIQ006619; Wed, 26 May 2004 14:10:35 -0400 (EDT) (envelope-from pdubuc@cas.org) Message-ID: <40B4DD9B.30701@cas.org> Date: Wed, 26 May 2004 18:11:00 -0000 From: Paul Dubuc Organization: Chemical Abstracts Service (CAS) User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020920 Netscape/7.0 MIME-Version: 1.0 To: Daniel Jacobowitz CC: Andrew Cagney , Bob Rossi , GDB Mailing List Subject: Re: Taking the address of a convenience variable value References: <40B37A92.6020106@cas.org> <20040525235958.GA30063@white> <40B4D2D2.3000700@gnu.org> <20040526173100.GA18211@nevyn.them.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2004-05/txt/msg00183.txt.bz2 Daniel Jacobowitz wrote: > On Wed, May 26, 2004 at 01:24:34PM -0400, Andrew Cagney wrote: > >>>On Tue, May 25, 2004 at 12:55:46PM -0400, Paul Dubuc wrote: >>> >>> >>>>>In the June 2004 issue of the C/C++ User's Journal (p. 24) there is an >>>>>article on how to write user-defined commands for gdb to examine the >>>>>contents of STL vectors, sets and maps. It looks extremely useful, so I >>>>>decided to try it modifying the commands for use with the GCC STL, but I >>>>>can't get some of the commands for sets and maps to work. It relies on >>>>>a tecnique that involves being able to take the address of a convenience >>>>>variable value, for example: >>>>> >>>>> set $maptype = &$arg0._M_t._M_header->_M_value_field >>>>> set $maptypep = &$maptype >>>>> >>>>>When I try this the 2nd statement gives me the error message >>>>> >>>>> Attempt to take address of value not located in memory. >>>> >>As you note, its trying to take the address of a convenience variable - >>since convenience variables do not live in the inferior they don't have >>an address. >> >>Does: >> >> set $maptype = &$arg0._M_t._M_header->_M_value_field >> set $maptypep = &&$arg0._M_t._M_header->_M_value_field >> >>or: >> >> set $maptype = $arg0._M_t._M_header->_M_value_field >> set $maptypep = &$arg0._M_t._M_header->_M_value_field >> >>make sense? >> >>The other, sigh, possability is that this was a ``feature'' and there's >>been a regression :-/ > > > Or that it never worked in the FSF tree at all. There's a reference > below to HP-UX - could this be HP's hacked GDB sources? > > >>What does: >> >> (gdb) paddr &$arg0._M_t._M_header->_M_value_field >> >>display? > > > I don't think GDB has a paddr command? > Herman Pijl, the author of the article, passed this on to me from someone who e-mailed him about the same problem. This works: set $maptype = &$arg0._M_t._M_header->_M_value_field set $maptypep = {&$arg0._M_t._M_header->_M_value_field} I don't know why. -- Paul M. Dubuc