enhancement request: add DUEL patch to gentoo-patches for 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.
I ported it to gdb-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 needs polishing.
(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)
Reproducible: Always
Cannot be applied upstread, the patch is public domain which is not good enough
for FSF, they want the author to sign over the copyright, and he didn't want to
do it.
see http://sourceware.org/ml/gdb/2007-11/msg00170.html
Thank you!
But, if you ask me, I'd suggest to make it at least optional, with "duel" in
USE.
And if you're interested I could polish this patch a bit - remove unused files,
add a patch for gdb.info, etc.
if you like, you can post updated patches
i dont see the point in making it optional:
- it doesnt impair any existing functionality
- does not require any external dependencies
- is small in and of itself