Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* RE: problem with chained if statements?
@ 1999-04-01  0:00 Thompson, James C
  1999-04-01  0:00 ` Ovidiu Predescu
  1999-04-01  0:00 ` Todd Whitesel
  0 siblings, 2 replies; 9+ messages in thread
From: Thompson, James C @ 1999-04-01  0:00 UTC (permalink / raw)
  To: gdb

> From: Stan Shebs [ mailto:shebs@cygnus.com ]
> No consensus.  The tclites push for tcl of course, but that has
> political problems. Guile would be officially approved of, but no
> actual hacker seems to care enough to contribute actual changes.
> Other ideas surface from time to time, but haven't really gone
> anywhere.  If I was told I could have only one, I would probably
> go with Guile.

I recently added guile scripting support to a simulator project I work on,
and found it fairly easy; we added simple (usually) guile wrappers to each
function that needed to be available as a guile call.  If the gdb command
parser is structured so that each major command -- print, where, next, etc.
-- is bound to a single C function, then adding guile should be
straightforward.  Of course, you probably wouldn't want to completely
supplant the current command parser, but to augment it so that the current
command syntax is still available, with "guile-looking" commands getting
passed off to guile for evaluation.  This is certainly possible.

But I think the real power would be to add hooks into gdb at various places
to which guile scripts can be attached.  Breakpoints, for example: if I
could tell gdb to run a guile script each time a breakpoint is encountered,
then I could do "conditional debugging" by letting the script examine the
inferior program state so that execution pauses only when certain criteria
are met.  Of course, it's possible to accomplish the same thing by building
special debug code into the executable, but that's invasive and
time-consuming -- best case, I have to recompile my program.  The ability to
set up and change these hooks on the fly would be very nice.

--JT
From shebs@cygnus.com Thu Apr 01 00:00:00 1999
From: Stan Shebs <shebs@cygnus.com>
To: Guenther.Grau@bk.bosch.de
Cc: gdb@cygnus.com
Subject: Re: gdb-19990209 on sparc-2.5.1
Date: Thu, 01 Apr 1999 00:00:00 -0000
Message-id: <199903252355.PAA05700@andros.cygnus.com>
References: <36FABAB8.24A9B865@bk.bosch.de>
X-SW-Source: 1999-q1/msg00169.html
Content-length: 1027

   Date: Thu, 25 Mar 1999 23:37:44 +0100
   From: Guenther Grau <Guenther.Grau@bk.bosch.de>

   Stan Shebs wrote:
   > No.  4.17.86 is similar to 19990209, but comes from a branch that was
   > sprouted from the trunk on 15 Feb, and includes a bunch of little
   > fixes that were done as part of the pre-release testing process.
   > 19990209 is derived from the repository trunk by whacking out
   > Cygnus-only bits.  You should see fewer problems with 4.17.86.
   [...]
   > Try 4.17.86 instead - I remember something about a configuration
   > problem in opcodes in a snapshot, that might be the one.

   Ok. I did that, and it does indeed build properly. The warnings
   are still there, though. Do you accept any patches fixing the
   warnings? 

Sure, but not for 4.18, it's time to get it into users' hands.

Fortunately, this isn't going to be the last GDB release ever :-), so
it's still worthwhile to make all the warnings go away.  Andrew C.
has been bashing many of them, but there are lots left...

							Stan


^ permalink raw reply	[flat|nested] 9+ messages in thread
* problem with chained if statements?
@ 1999-04-01  0:00 J.T. Conklin
  1999-04-01  0:00 ` Stan Shebs
  0 siblings, 1 reply; 9+ messages in thread
From: J.T. Conklin @ 1999-04-01  0:00 UTC (permalink / raw)
  To: gdb

I'm trying to write some user-defined commands to traverse and/or
pretty-print some of the internal data structures used in our SW.  In
the absense of a `switch' statement, I am using a chain of if .. else
if ... else if ... else ... end statements.  Unfortunately it doesn't
seem to work.

For example, with the chain:
	if ($status == $TASK_READY)
                printf "READY    "
        else if ($status == $TASK_DELAY)
                printf "DELAY    "
        else if ($status == ($TASK_DELAY | $TASK_SUSPEND))
                printf "DELAY+S  "
        else if ($status == $TASK_PEND)
                printf "PEND     "
        else if ($status == ($TASK_PEND | $TASK_DELAY))
                printf "PEND+T   "
        else if ($status == ($TASK_PEND | $TASK_SUSPEND))
                printf "PEND+S   "
        else if ($status == $TASK_SUSPEND)
                printf "SUSPEND  "
        else if ($status == $TASK_DEAD)
                printf "DEAD     "
        else
                printf "%8x ", $status
	end

Always prints the numeric value of $status, even when it is equal to
one of the pre-defined $TASK_FOO variables.  However, a simple test

	set $status = $TASK_READY
	if $status == $TASK_READY
		printf "OK\n"
	end
works as expected.


Is my syntax for this wrong in some way, or should I be looking for 
an bug inside GDB.

	--jtc

-- 
J.T. Conklin
RedBack Networks


^ permalink raw reply	[flat|nested] 9+ messages in thread
* RE: problem with chained if statements?
@ 1999-04-01  0:00 Thompson, James C
  0 siblings, 0 replies; 9+ messages in thread
From: Thompson, James C @ 1999-04-01  0:00 UTC (permalink / raw)
  To: gdb

> -----Original Message-----
> Um, gdb already lets you do this, subject to the limitations 
> of the gdb
> command language and variable facilities.

I guess I've only been using the basic gdb commands, as I'm not familiar
with "command" (and on further investigation it sounds like what I need is
more akin to "condition" than "command").  The point is that if you have a
true scripting language like guile then you're not subject to the
limitations you mentioned.  And it sounds like some of the hooks are already
in place.

--JT


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~1999-04-01  0:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-04-01  0:00 problem with chained if statements? Thompson, James C
1999-04-01  0:00 ` Ovidiu Predescu
1999-04-01  0:00   ` Stan Shebs
1999-04-01  0:00 ` Todd Whitesel
1999-04-01  0:00 J.T. Conklin
1999-04-01  0:00 ` Stan Shebs
1999-04-01  0:00   ` J.T. Conklin
1999-04-01  0:00     ` Stan Shebs
1999-04-01  0:00 Thompson, James C

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox