From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8224 invoked by alias); 19 Feb 2008 19:08:27 -0000 Received: (qmail 8113 invoked by uid 22791); 19 Feb 2008 19:08:26 -0000 X-Spam-Check-By: sourceware.org Received: from bluesmobile.specifix.com (HELO bluesmobile.specifix.com) (216.129.118.140) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 19 Feb 2008 19:08:08 +0000 Received: from [127.0.0.1] (bluesmobile.specifix.com [216.129.118.140]) by bluesmobile.specifix.com (Postfix) with ESMTP id B7A6F3C02A; Tue, 19 Feb 2008 11:08:06 -0800 (PST) Subject: Re: implementing eval command From: Michael Snyder To: Yakov Lerner Cc: gdb@sourceware.org In-Reply-To: References: <1203098329.19253.133.camel@localhost.localdomain> Content-Type: text/plain Date: Tue, 19 Feb 2008 19:12:00 -0000 Message-Id: <1203448086.19253.153.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.10.3 (2.10.3-7.fc7) Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2008-02/txt/msg00139.txt.bz2 On Sat, 2008-02-16 at 09:36 +0200, Yakov Lerner wrote: > On Fri, Feb 15, 2008 at 7:58 PM, Michael Snyder wrote: > > Moving this to "gdb" list, since it is not a patch. > > > > > > > > On Thu, 2008-02-14 at 18:18 +0200, Yakov Lerner wrote: > > > I'd like to make a patch that implements eval command, as follows. > > > I have following idea to implement eval simply: > > > Syntax of eval will be similar to the syntax of 'printf' command: > > > eval "string with %..." comma-separated-expressions > > > Implementation relies on existing printf_command() function, > > > by rewriting printf_command into pair of functions, one that computes > > > result of printf as allocated string; both printf_command and eval_command > > > will use compute_printf() function. > > > What do you think ? > > > > Hmmm, that would be one way of getting around the > > limitations of some commands that can't accept expressions > > as arguments (mentioned in another thread). > > > > What do you see as the context for this eval command? > > How do you imagine it will be used? > > Apparently, the capability to insert variable into arbitrary part of > gdb command is missing in gdb. I hit this several days ago when I needed > to make a script that uses 'thread apply $num where' to a subset of threads > in a program that had hundreds of threads and I was told on the list that this > is impossible. Oh yes, that was the thread I was thinking about. > I also see other requests for eval command on the mailing list archive. > So, instead of enriching just 'thread apply' command to accept variable > (or maybe parenthesized expression) I thought it's much more generic > to have eval command in the end. > > I thought about easy way to implement it, and then I got idea of using > the print-like format and comma-separated arg list. Cool, well, personally I think this is a very interesting idea. With the printf format, it should be possible to construct fairly complex commands.