Path: utzoo!attcan!uunet!husc6!bbn!diamond.bbn.com!mlandau From: mlandau@bbn.com (Matt Landau) Newsgroups: comp.lang.c Subject: Re: C interpreters? Summary: Info about Saber from a beta tester [long] Keywords: C interpreter Message-ID: <11085@jade.BBN.COM> Date: 25 May 88 18:10:42 GMT References: <844@esunix.UUCP> Reply-To: mlandau@bbn.com (Matt Landau) Organization: BBN Laboratories Incorporated, Cambridge, MA Lines: 112 In comp.lang.c (<844@esunix.UUCP>), bpendlet@esunix.UUCP (Bob Pendleton) writes: > >I've heard some rumors about a C interpreters called Sabre. Does anyone >know where I can get more information about it? I've been helping to beta test new versions of Saber for a couple of months now, using Saber to develop new code and debug existing code under both SunView and X11. It was particularly useful to be able to call Xlib functions interactively in the interpreter and see what would happen -- I learned a great deal about how X really works that way. I have no particular connection with Saber Software, except as a very satisfied (and impressed!) customer and beta-test site. -- Matt Landau Riding shotgun down the avalanche mlandau@bbn.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Saber is a rather impressive interpreter/debugger combination for C programmers. Here's a brief description of some of its features: * The debugging environment is a workspace into which you can load a combination of compiled and interpreted code. The workspace understands a superset of dbx commands, so if you can use dbx it's pretty easy to switch to Saber. The workspace is also an ANSI compatible C interpreter, so you can do anything that can be expressed in C -- define and call functions, create and modify data, define and call macros (How often have you wanted to use a #define in dbx?) etc. * At load-time, the interpreter does stronger-than-lint syntax and type checking. Errors are flagged with a message; you can ignore this instance of the error, suppress future complaints about the error (for this line, this procedure, this source file, or globally), or edit the file [your $EDITOR pops up positioned on the offending line] and have it automatically reloaded. * Code is dynamically linked. Source modules can be modified within or outside Saber, so if you (or Saber) detect an error at runtime you can fix it and reload the file. You're reset to the top-level of the workspace, with your debugging environment intact, so you can test the modified code immediately. * Another implication of dynamic linking is that you can run code fragments -- if you try to reference something that doesn't exist yet, Saber will drop you into a Lisp-like break level and let you define the required objects or functions on the fly, or else just provide a one-shot value to use in place of the missing object or function call. * There's an extensive variety of breakpoints and watchpoints you can set. These can be tagged with user-specified actions, which are arbitrary functions or C code fragments. You can also attach arbitrary user-defined output functions to datatypes, so when you say "print foo" it prints in whatever format you like. * There's also a whole set of functions for listing the contents of modules or libraries, cross-referencing for data and functions, etc. * Runtime pointer and array bounds checking in interpreted code. This is perhaps the single most valuable feature in Saber - it tends to find those "stray pointer trashes allocated memory" bugs, gives you a warning message telling what pointer went bad and where, and drops you into a break level. * It deals gracefully with multiple windows under SunView and X11, using separate windows for editing, code listing, help requests, program I/O, etc. * They're also testing an amazing thing called "sabertool", which is the dbxtool of Saber, only better. It's hard to describe all the nifty stuff sabertool does, including: + visual crossreferencing, which displays a map of who uses and is used by a given symbol, allows you to click on things to extend the crossreference in either direction + the usual panels full of buttons to execute debugger commands + separate panels that show you the how the load or link stages are progressing, display online help, display program I/O, etc. and the really wonderful part. . . + the data browser, which must be seen to be believed. You know all those papers you've seen about visual display of data structures all nicely formatted in little boxes, with the ability to click on pointer fields and follow all of the links? Well, this is what they're talking about -- it's like working with a Lisp Machine debugger, but for C on your Sun. Really impressive. It's also saved me a lot of debugging time, even in the (not fully integrated into the rest of Saber) beta test version. Saber is currently available on Sun-2's, Sun-3's, and VAXen, running under SunOS, Ultrix, and 4.3BSD, and using SunView, X10, or X11 if they're available. (Sabertool is only available with SunView at the moment.) Pricing starts around $1000 for the first CPU (quantity 1), with volume discounts (e.g., about $500/copy in quantities of 20 or more). For detailed pricing or more information, you can reach Saber Software by electronic mail as "saber@harvard.harvard.edu", or at Saber Software, Inc. 30 JFK Street Cambridge, MA 02138 (617) 876-7636