Proselytizing UPS

From: Russell Browne (
Date: Fri Mar 17 2000 - 19:41:40 GMT

Bob Carragher wrote:

> By the way, Ian Edward's suggestion of using Purify is
> practically useful, but it doesn't help with proseletizing
> UPS. ...

To investigate infinite recursion, set a breakpoint in the offending
function and edit to look like

     static int i=0; if (i++ > 1000) #stop;

The should break the process well into the offending call, even if
there are a few valid calls first, but well before the stack overflows.

Ask your gdb fans how to do that!

I think how well it handles infinite recursion is a rather
minor point in choosing a debugger.  Some ups features that
I find far superior to other debuggers I have tried:

  The point and click method for displaying a variable or looking
  at a function's source.  Other debuggers want you to highlight
  the function or variable then press a button to say what you
  want to do with it.

  You can look at variables or expressions at all levels of the
  stack at once.  Other debuggers require you to select a stack
  frame then it will show you the variables at that level of
  the stack.

  The method for creating conditional breakpoints is far more intuitive
  than other debuggers I have used.  It can also be used to insert
  quick fixes by setting a variable.

  I don't know of any other debugger that has something like $printf.
  This is very handy for bugs that have some timing dependency so
  that they go away when you stop the process to investigate them.

  The methods for deleting or disabling breakpoints are
  friendlier than for other debuggers.  Most debuggers hide the
  list of breakpoints in some popup dialog where they are hard to find.

  The snapshot feature is handy; beats hand written notes!  I don't
  know of any similar feature in any other debugger.

  The behavior of "next" after an upstack is what I want.
  Most debuggers insist on doing the "next" at the lowest stack
  frame instead of the current frame. ( Many debuggers have a
  "step out" button, which ups is lacking.  But "step out" buttons only
  go up a single stack frame; the ups implementation of "next" can go
  up any number of stack frames.)

  The methods for formatting variables (hex/decimal/etc.), and for examining
  arrays and structures are nicer than for other debuggers I've used.

  The features for saving of state and for saving and restoring breakpoints
  are nicer than other debuggers.  I'm not aware of any similar feature
  for gdb/ddd.  Other debuggers that do save state (e.g. Visual Studio)
  go too far and restore breakpoints whether you want them or not.
  I call this restoring the user's state of confusion from the last run.

Russ Browne
Applied MicroSystems Corp.

This archive was generated by hypermail 2.1.4 : Wed Feb 13 2002 - 21:51:33 GMT