Contents
|
Search the site... |
Ups is a source level C,C++ and Fortran debugger that runs under X11. Currently supported systems are FreeBSD and GNU/Linux on Intel x86 and Solaris on SPARC. On these systems it runs native; it is not a front-end to GNU gdb. An ANSI C interpreter is included; this is built in to ups to provide conditional debugging and can also be built as a seperate program.
If you are using some other operating system or processor then please see the systems information as ups has in the past been ported to a variety of computers, and may include code for your system.
Ups was written by Mark Russell of the Computer Science department at the University of Kent at Canterbury, and was originally part of the Kent Software Tools suite.
Please read getting started with ups to see how easy it is to use.
For more details on using ups please see the manual page and look at the README file and description of changes, which will mention new features.
Now you should be ready to download ups and try it on your programs.
Support of ups is provided through the mailing list and the ups SourceForge project page.
31 Aug 2003 | ups 3.38-beta2 available. |
18 Dec 2002 | RPM for Intel x86 Linux updated to 3.37. |
25 Oct 2002 | ups 3.38beta1 available. |
17 Oct 2002 | ups SourceForge project created. |
22 May 2002 | ups 3.37 released. |
The current released version is ups 3.37. The release was announced on 22nd May 2002. You can download source, or binaries for certain systems, from these sites.
Note - if you are using GCC version 3.x on FreeBSD or Linux then you need to build the program to be debugged with -gstabs instead of -g, or use the beta version of ups.
For general information about ups see the README file, new features and bug fixes are described in the CHANGES file, known bugs are listed in the BUGS file.
A beta version of the next release may be available. You can also download the source using CVS.
Beta versions of ups are available from the ups SourceForge project page
http://sourceforge.net/projects/ups/
If you must have the very latest ups development source then you can access it using anonymous CVS from SourceForge. As these are development versions there is no guarantee that what you download will work, or even build. How to get ups using CVS.
For the impatient this should work :
This gives you the sources in the ups subdirectory and the ups executable build/ups/ups.mkdir UPS cd UPS cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/ups checkout ups mkdir build cd build ../ups/configure make
There are no patches for ups 3.37. If you are having problems it may be worth trying the latest beta or latest development sources.
Below are patches for ups 3.35beta2; they were included in ups versions 3.35beta3 and later.
Warning: sizeof(bool) inconsistent across compile modules!
and
Fatal internal error: bad number in parse_num
Patch fixes warning message and crash on RedHat Linux 7.1, and possibly other systems with gcc-2.96 and gcc 3.0.1.
Apply with patch(1).
Patch supplied by Russell Browne<Bad format hint>
Patch fixes problem displaying variables in complex C++ programs.
Apply with patch(1).
Patch supplied by Russell Browne
Sometimes if you are building ups on an old version of an operating system it is easier to use an old version of ups. These are patches for ups 3.33.Linux : Debian 2.0 (kernel) 2.0.35
Patch allows ups 3.33 to build on Debian 2.0. This also fixes a crash when you click on a variables of certain types, so may be applicable to other Linux distributions, changes are described here.
Apply with patch(1).
Patch supplied by ladanyi@watson.ibm.com.Solaris 2.6
Change to allow ups 3.33 built on Solaris 2.6 to debug Solaris 2.5 core files.
Apply manually.
Patch supplied by Rod Armstrong.FreeBSD 2.2.x & 3.0
Patch allows ups 3.33 to build and run on FreeBSD 2.2.6, 2.2.7 and 3.0 (a.out only). Minor change from 06oct98 version so it now applies cleanly.
Apply with patch(1).
Patch supplied by Ian Edwards.
Ups has support for debugging Fortran but this is not as complete as the C/C++ support.Sun Fortran and GNU Fortran are supported. Programs built with the f2c preprocessor should also work. See the BUGS file for known problems and work-rounds.
If you are using GNU Fortran and are having problems you should read the section on debugging in the g77 documentation with the UNIX command :
info g77 debuggingBeing unable to display variables in COMMON and EQUIVALENCE blocks is the main problem.
Hints and tips about using ups are covered in the FAQ (Frequently Asked Questions).Some undocumented features (thanks to Rod Armstrong ) :
- Use add expr to typecast zero to a data structure which can then be expanded to examine its members.
- Use CTRL-SHIFT-LMB/RMB to customize the window layout. These actions move the menus, scrollbars, and windows around. The RMB does the opposite to the LMB.
- Environment variables:
VERBOSE prints out what libraries are being loaded. WN_AUTORAISE raises ups on breakpoint when it has focus. WN_MAX_WAIT max time between events on replay XSYNCHRONISE synchronizes ups with all X lib calls. Someone asked how to trace routine calls in a program without manually adding breakpoints for all the routines : create a file of breakpoints, which call printf() instead of doing a #stop and load that into ups.
- Create a Perl script list_to_bpts.pl (there is a copy in the distribution)
#!/usr/bin/perl while (<>) { chomp; printf STDOUT 'breakpoint "%s" { printf ("at %s()\\n"); } ', $_, $_; }- Create a list of functions in the program and convert it into what ups wants. On FreeBSD this works :
nm myprog | grep -v _start | grep ' T ' | cut -c 12- | list_to_bpts.pl > bpts
- Run ups on the program, select breakpoints then load file and type the file name at the prompt. Now just do start.
When you upgrade to a new release be sure to read the README and CHANGES files from the ups distribution.
Beta versions of ups source are available from the ups SourceForge project page
http://sourceforge.net/projects/ups/Beta versions of ups executables and RPMs may be available from :
http://www.concerto.demon.co.uk/UPS/bin/
An RPM package of ups 3.37 for Linux on Intel x86, built on SuSE Linux 7.2, is available at :
http://www.concerto.demon.co.uk/UPS/bin/ups-3.37-20021218.i386.rpmAn RPM package of ups 3.35 for Linux on Intel x86, built on RedHat Linux 6.2, is available at :
http://www.concerto.demon.co.uk/UPS/bin/ups-3.35-20000927.i386.rpm
MD5 checksum for ups-3.37.tar.gz is 9e406012a9cb84a5e9238f8dde46fa2b
Please check if there are patches for the current release that you should apply before building it.
Release versions of ups source, starting with 3.38, will be available from the ups SourceForge project page
http://sourceforge.net/projects/ups/The source, and binaries for certain systems, for the current release and some earlier versions, is available from the master X Window System site ftp.x.org and its various mirror sites in the contrib/utils directory :
ftp://ftp.x.org/contrib/utilities/Please download from the nearest mirror site, which include :
ftp://metalab.unc.edu/pub/X11/contrib/utilities/
ftp://ftp.cs.ubc.ca/pub/mirror/x-contrib/utilities/
ftp://ftp.funet.fi/pub/X11/contrib/utilities/
ftp://ftp.sunet.se/pub/X11/contrib/utilities/
ftp://sunsite.doc.ic.ac.uk/packages/X11-contrib/utilities/The latest release is also available from Linux software archives such as :
ftp://metalab.unc.edu/pub/Linux/devel/debuggers/Versions of ups executables for some systems, e.g.Solaris 2.x, are also available from :
http://www.concerto.demon.co.uk/UPS/bin/The original home FTP site for ups, with source and binaries, plus older releases and other ups related files, is the University of Kent at Canterbury :
ftp://unix.hensa.ac.uk/pub/misc/unix/ups/
The BUGS file supplied with ups lists known bugs and problems.
GCC 3.1 (and later) has changed the default format used for the debugging information, except on Solaris, from STABS to DWARF. Versions of ups before 3.38 do not recognise DWARF. Building your program with -gstabs instead of -g should allow ups to debug them.
3.38-beta2 includes support for DWARF in 'C' and C++ programs. 3.38beta1 supports DWARF in 'C' programs only. Work to improve DWARF support in ups is in progress and available for testing from the CVS repository on SourceForge.
There is a mailing list for discussion of ups and for announcements of bug fixes and new features, this is also the place to go if you are having problems. See below for details of how to subscribe. There is an archive of the mailing list.Note : You do not have to be subscribed to the list in order to send messages to it, but if you do this then remember to ask for a reply to your email address rather than to the list. The address to use is ups-users@ukc.ac.uk.
Please join the list if you are using ups.
Here is the information about the list, you can get a copy by sending a message with a subject of help to ups-users-request@ukc.ac.uk.
Subscribing
To subscribe to ups-users, send the following in the body (not the subject line) of an email message to list-manager@ukc.ac.uk:subscribe ups-usersThis will subscribe the account from which you send the message to the ups-users list.
If you wish to subscribe another address instead (such as a local redistribution list), you can use a command of the form:
subscribe ups-users other_address@your_site.your_netUnsubscribing
To unsubscribe from ups-users, send the following in the body (not the subject line) of an email message to list-manager@ukc.ac.uk:unsubscribe ups-usersThis will unsubscribe the account from which you send the message. If you are subscribed with some other address, you'll have to send a command of the following form instead:
unsubscribe ups-users other_address@your_site.your_netIf you don't know what address you are subscribed with, you can send the following command to see who else is on the list (assuming that information isn't designated "private" by the owner of the list):
who ups-usersIf you want to search non-private lists at this server, you can do that by sending a command like:
which stringThis will return a list of all entries on all lists that contain "string".
Help
To find out more about the automated server and the commands it understands, send the following command to list-manager@ukc.ac.uk:helpIf you feel you need to reach a human, send email to
ups-users-approval@ukc.ac.uk. Archive
There is an archive of the mailing list for the years 1998 to date. You can look at the indexes by author, date, thread or subject.
GDB: The GNU Debugger is a source-level debugger for C, C++ and Fortran. DDD - Data Display Debugger a graphical front-end for GDB and other command-line debuggers. thefreecountry.com - lots of free stuff: Developer City (free programmers' resources), eCentriCity (free web designers' resources), Software City (free software).
Ever wondered about the ups-song.au and ups-song.ms files on the University of Kent at Canterbury FTP site ? I had this email from Mark Wheadon about it :Many years ago, I wrote & recorded a song to provoke the original author of the ups debugger to release it to the world.Called Just one more Hack (and I'll put it on the Net) the goad worked, and Mark released ups soon after (grin).
Anyway, I finally got around to uploading an mp3 of the song to www.mp3.com
http://www.mp3.com/earlybUrtgets people to the web page from which they can download the MPEG, or listen to it online.Cheers,
Mark Wheadon (aka bUrt Wheadon)
This site is based on, and includes, documents from the ups distribution written by Mark Russell and Rod Armstrong (who has supplied the FAQ and other information).Thanks to Mike Ellis and Siegfried Raber for additional information.
Please send comments, corrections, etc regarding these pages to Ian Edwards.
Maintained by Ian Edwards.
$Id: main.html,v 1.38 2003/08/31 10:57:25 ian Exp ian $ |