From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9288 invoked by alias); 17 Nov 2007 20:11:33 -0000 Received: (qmail 9273 invoked by uid 22791); 17 Nov 2007 20:11:32 -0000 X-Spam-Check-By: sourceware.org Received: from mail2.ks.pochta.ru (HELO mail2.ks.pochta.ru) (82.204.219.182) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 17 Nov 2007 20:11:27 +0000 Received: from [80.135.30.204] (helo=janus.mylan) by mail2.ks.pochta.ru ( sendmail 8.13.3/8.13.1) with esmtpsa id 1ItQFb-000N9C-57 for gdb@sourceware.org; Sat, 17 Nov 2007 19:10:31 +0300 Received: (qmail 25434 invoked by uid 1000); 17 Nov 2007 20:13:26 -0000 Date: Sat, 17 Nov 2007 20:11:00 -0000 From: Sergei Golubchik To: gdb@sourceware.org Subject: DUEL support Message-ID: <20071117201326.GA25388@janus.mylan> Mail-Followup-To: gdb@sourceware.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20071116115303.GA18919@janus.mylan> User-Agent: Mutt/1.5.11 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: 2007-11/txt/msg00170.txt.bz2 Hi. Is there an interest in having DUEL support in GDB ? DUEL is a high-level data exploring language, originally written as a gdb patch in 1993, for a PhD project. Apparently, forgotten and abandoned since then, although it made into dbx on irix (looks like SGI simply applied it, as the patch is public domain) - that's where I first saw the feature. I found that patch yesterday, ported to 6.6, fixed a few bugs (added support for bool, long long, typedefs, references, fixed type parsing, etc). Looks like working. I didn't spend too much time on it though, the patch definitely needs polishing. Anybody's interested ? This is what it looks like: (gdb) dl Supported DUEL commands: duel help - give basic help (shortcut: dl ?) duel longhelp - give a longer help (dl ??) duel examples - show useful usage examples (dl ex) duel operators - operators summary (dl ops) duel aliases - show current aliases (dl alias) duel clear - clear all aliases duel debug - toggle duel debug mode (gdb) dl ex x[10..20,22,24,40..60] display x[i] for the selected indexes x[9..0] display x[i] backwards x[..100] >? 5 if(_>5 && _<10) _ same val[..50].if(is_dx) x else y val[i].x or val[i].y depending on val[i].is_dx emp[..50].if(is_m) _ return emp[i] if emp[i].is_m x[i:=..100]=y[i] ; assign y[i] to x[i] x[i:=..100] >? x[i+1] check if x[i] is not sorted (x[..100] >? 0)[[2]] return the 3rd positive x[i] argv[0..]@0 argv[0] argv[1] .. until first null emp[0..]@(code==0) emp[0]..emp[n-1] where emp[n].code==0 head-->next->val val of each element in a linked list *head-->next[[20]] element 20 of list, '*' display struct w/fields #/head-->next count elements on a linked list #/(head-->next-val>?5) count those over 5 head-->(next!=?head) expand cyclic linked list (tail->head) T mytype x ; declare var for user defined type (need 'T') int i ; for(i=0 ;i<5 .. declare variable, use C construct. (gdb) Regards, Sergei