public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
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

       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).