From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 728 invoked by alias); 9 Mar 2002 02:58:47 -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 586 invoked from network); 9 Mar 2002 02:58:43 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 9 Mar 2002 02:58:43 -0000 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 16jX41-0003w8-00; Fri, 08 Mar 2002 21:58:29 -0500 Date: Fri, 08 Mar 2002 18:58:00 -0000 From: Daniel Jacobowitz To: Bradford Chamberlain Cc: gdb@sources.redhat.com Subject: Re: QUERY: Pretty-printing C++ classes in gdb Message-ID: <20020308215829.A14794@nevyn.them.org> Mail-Followup-To: Bradford Chamberlain , gdb@sources.redhat.com References: <20020308165335.L25327-100000@gnocchi.cs.washington.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20020308165335.L25327-100000@gnocchi.cs.washington.edu> User-Agent: Mutt/1.3.23i X-SW-Source: 2002-03/txt/msg00078.txt.bz2 On Fri, Mar 08, 2002 at 04:56:43PM -0800, Bradford Chamberlain wrote: > > (I hope the following is not a FAQ. I didn't find one on the gdb page.) > > I am curious whether gdb has hooks that would allow me to provide a means > of pretty-printing C++ classes without modifying the gdb source code. > For example, imagine that I am supplying you with a C++ class library, and > want to save you the hassle of inspecting the guts of my classes and > understanding their inner workings when debugging your code that uses > them. Rather, I'd like to cause "p instanceOfClassFoo" to give you a > clean view of the class that doesn't require understanding its > implementation. > > One way to do this would be to hack the source, perhaps treating my > library as a new language. However, I'd like to avoid changing the gdb > source both for simplicity and so that I don't have to ship users a new > copy of gdb. So is there a less intrusive way that I can hook my pretty > printing in? For example, I could imagine that a well-defined method name > or operator<< overload might be utilized by gdb if it exists. Or that > perhaps I can give you a dot-file that will be used at load time to > configure the behavior. > > Any information on whether such a feature exists, or other possible > workarounds would be appreciated. The standard way to do this is: - Provide a .gdbinit. Placed in the current working directory or in $HOME, it lets you specify commands to be executed. - Provide utility functions or methods to print each class however you wish. - Provide aliases in the former to call the latter. GDB will probably never do this by default for some method name or operator overload; it is not appropriate (what if the functions affect state?). Be sure to write the print functions carefully. -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer