From: Sergei Golubchik <sergii@pisem.net>
To: gdb@sourceware.org
Subject: DUEL support
Date: Sat, 17 Nov 2007 20:11:00 -0000 [thread overview]
Message-ID: <20071117201326.GA25388@janus.mylan> (raw)
In-Reply-To: <20071116115303.GA18919@janus.mylan>
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
next parent reply other threads:[~2007-11-17 20:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20071116115303.GA18919@janus.mylan>
2007-11-17 20:11 ` Sergei Golubchik [this message]
2007-11-19 2:02 ` Jim Blandy
2007-11-19 6:46 ` Sergei Golubchik
2007-11-19 6:50 ` Robert Dewar
2007-11-19 8:55 ` Sergei Golubchik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071117201326.GA25388@janus.mylan \
--to=sergii@pisem.net \
--cc=gdb@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).