This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
DUEL support
- From: Sergei Golubchik <sergii at pisem dot net>
- To: gdb at sourceware dot org
- Date: Sat, 17 Nov 2007 21:13:26 +0100
- Subject: DUEL support
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 <? 10 display x[i] if 5<x[i]<10
x[0..99]=>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