Date: Wed, 24 May 1995 11:48:26 -0600 From: kurto@tiny.mcs.usu.edu (Kurt Olsen) To: hackers@freefall.cdrom.com Subject: Re: UPS 3.7 Message-ID: <199505241748.LAA26212@tiny.mcs.usu.edu>
next in thread | raw e-mail | index | archive | help
Here is a forwared copy of Mark's announcement. There is also patches in
the ports directory (or in incoming I forget) to make this work with 2.x.
Kurt,
Here's some original mail from Mark.
...alan
--- Forwarded mail from Mark Russell <M.T.Russell@ukc.ac.uk>
To: ups-users@ukc.ac.uk
The latest version of the ups 3 alpha release is now available. This
has fixes for various bugs reported by people who tested the 3.6alpha
release. Many thanks to everyone who tried it out and reported
problems.
As well as bug fixes this version includes a CHANGES file with details
of the new features. I have appended a copy of the CHANGES file to
this message.
The release is available by anonymous FTP from unix.hensa.ac.uk. The
path is /misc/unix/ups/ups-3.7-alpha.tar.Z. There is also a patch to
covert from 3.6-alpha to 3.7-alpha. The path of the patch file is
/misc/unix/ups/ups-3.6-to-3.7-alpha.patch.Z.
Mark
--- The top level CHANGES file ---
@(#)CHANGES 1.2 16 Sep 1994 (UKC)
Introduction
------------
This is an alpha release of ups 3, implemented on top of gdb. This
version has only been compiled and tested (a bit) on Solaris 2.3.
There are undoubtedly plenty of bugs still to discover.
See the file README for build instructions.
Changes since 2.45.3
--------------------
- Gdb based support
Ups can now be build using a automatically modified version of
the GNU gdb debugger. See the README file for the precise
instructions. Basically the process is:
- unpack, configure and build gdb
- run a shell script which builds a symlinks copy of
the source tree, munges the gdb source file there,
then builds libgdb.a from the munged source files
- run make in the top-level directory to build ups
using libgdb.a for the debugger functionality.
Currently ups builds `out of the box' on Solaris 2.3 only, but
I have built working versions for HPUX and IRIX using the gdb
support. Canned support for these and other architectures
will be included in a future release.
You can still build ups on SunOS 4.1.3 using the native
support (again, see the README file for details). It is also
possible to build the gdb based version on 4.1.3, but there is
not much point doing this.
- Emacs-like key mappings
You can use most of the common emacs key mappings when editing
text (e.g. in the typing line, when adding breakpoints etc).
Here is a list of the supported mappings (C-x means CONTROL-x
M-x means ALT-X, UP, DOWN, LEFT and RIGHT are the arrow keys
SPC is the space bar and DEL is the delete key):
C-a move to start of line
C-e move to end of line
M-m move to first non-whitespace character
M-@, M-SPC set mark
C-w delete text between mark and point
C-p, UP move up a line
C-n, DOWN move down a line
C-b, LEFT move backwards one character
C-f, RIGHT move forward one character
M-b move backwards one word
M-f move forward one word
C-j, C-m finish edit (insert newline in source window)
ESC finish edit (including in source window)
C-k delete to end of line
C-u delete to start of line (note: non-emacs)
C-d delete character under cursor
M-d delete word starting at cursor
DEL delete character before cursor
M-DEL delete word before cursor
C-y paste X selection
M-> move to end of buffer
M-< move to start of buffer
- Cut and paste
You can select text with highlighting in the source window,
the output window and in fields you are editing. To select
text, press the left mouse button and drag. Releasing the
left mouse button sets the X selection and clears the
highlighting.
You can paste text into an edit with control-Y (currently you
can't paste with the mouse - this will be done soon). In the
source window there are some extra shortcuts:
- pressing and releasing the left mouse button (without
dragging) adds a variable name to the display as in
previous versions of ups. Only if you move the mouse
to a different character with the left button down do
you get a plain X selection.
- doing a press-left-and-drag selection with the SHIFT
key pressed automatically pastes the selected text as
an expression into the appropriate place in the stack
trace. It is equivalent to selecting some text,
selecting `add expr' for the appropriate entry in the
stack trace, pressing ^Y to paste the text and
hitting RETURN.
- If you hold the shift key down, the press and release
the left mouse button without moving the mouse, ups
adds the expression under the mouse to the display
area. It makes a reasonable attempt to select what
to display. Try it out to see what I mean.
Pasted expressions will often include preprocessor macros such
as NULL, which ups will fail to recognise. The right solution
for this is for ups to understand #defines, but in the interim
there is a workaround: if the file ups-state/repltab exists in
the current directory ups will apply the substitutions specified
there. Here is a repltab that would deal with NULL and stdout
# Repltab for ups
NULL 0
stdout &iob[0]
Hash comments and blank lines are ignored in the normal way.
Any substitutions will be visible in the pasted expression.
Ups checks to see if the repltab file has been updated each
time an expression is pasted, so you don't have to restart ups
to get changes noticed.
- State save and restore
If the file ups-state exists in the current directory, ups
will write state information to it when you exit, and reload
state when you start. This includes breakpoint locations
(and the interpreted code, if any), and the state of the
variables display. The saved state is used in several ways:
- after starting ups, you can select `Restore' from the
`Breakpoints' menu to put breakpoints back as they were
from the previous session. Ups tries to put
breakpoints back in the right places, but it can be
defeated by major changes to the source code.
- the default for the `Expand' option for stack trace and
source file entries is `like before'. This adds
variables as they were in the last ups session (or the
last time you made a change the variables display for
this function).
- when you hit a breakpoint in a function variables and
expressions are restored as they were last time you
stopped in this function (even if the target process
has been killed and restarted in between).
- when you add a variable the display format (hex, octal
etc) is taken from the way it was last time you
displayed the variable).
State is saved to the file ups-state/xxx.state, where xxx
is the last component of the file you are debugging. You
can also create the file ups-state/xxx.config (possible by
copying ups-state/xxx.state). The .config file is read at
startup by ups, but not written. Also, breakpoints in the
.config file are automatically restored on startup.
In future releases you will be able to use the .config file
to specify how signals are handled, add environment variable
settings, etc. Currently the only directive (other than
things specifying breakpoints and saved variable state) is
`auto-start', which takes a single argument `yes' or `no'.
The line:
auto-start yes
in the xxx.config file means start the target running as
soon as ups has started up.
Ups also looks for saved state in the file $HOME/.upsrc and
.upsrc (in the current directory). Thus the full set of
files is:
$HOME/.upsrc
$PWD/.upsrc
ups-state/xxx.config
ups-state/xxx.state
Files later in the sequence can override earlier settings.
- Loading and saving breakpoints
You can explicitly load and save breakpoints to files. To save
breakpoints, select one or more in the display area, then
select `save' from the menu. You will be prompted for a file
name. If the file already exists you will be asked whether
you want to cancel the save, overwrite the file or append to
it.
Saved breakpoints can be reloaded by selecting `Load' from the
`Breakpoints' header menu.
- Editing in the output window
You can now edit in the output window (the window where
$printf output goes. Click with the middle mouse button to
display a cursor. You can then append or delete text. This
is useful for tidying up output to make it clearer, or for
deleting uninteresting stuff.
Coming soon: dumping objects (like the stack trace) to the
output window, and saving the contents of the output window to
a file).
Known bugs
----------
These are the major bugs that I know of in this release. I will be
fixing these as soon as possible.
- Debugging from a core file does not work on SunOS 4.1.3
- Attaching to a running process does not work anywhere
Mark Russell
16th September 1994
--- End of forwarded mail from Mark Russell <M.T.Russell@ukc.ac.uk>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199505241748.LAA26212>
