The ups debugger for C, C++ & Fortran


  1. What is ups ?
  2. News
  3. Current release 3.37
  4. Beta version 3.38-beta2
  5. CVS access
  6. Patches
  7. Download
  8. Supported systems
  9. Unsupported systems
  10. Documentation
  11. Support
  12. Links to other sites
  13. ups song
  14. About these pages - acknowledgements etc.

Search the site...

Advanced Search


What is ups ?

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.


Current release 3.37

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 version

Beta versions of ups are available from the ups SourceForge project page


CVS access

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 :

mkdir UPS
cd UPS
cvs checkout ups
mkdir build
cd build
This gives you the sources in the ups subdirectory and the ups executable build/ups/ups.



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!
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


Patches to earlier versions

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

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.


Fortran support

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 debugging
Being unable to display variables in COMMON and EQUIVALENCE blocks is the main problem.


Hints & undocumented features

Hints and tips about using ups are covered in the FAQ (Frequently Asked Questions).

Some undocumented features (thanks to Rod Armstrong ) :

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.

When you upgrade to a new release be sure to read the README and CHANGES files from the ups distribution.



Beta version

Beta versions of ups source are available from the ups SourceForge project page

Beta versions of ups executables and RPMs may be available from :

Linux RPM

An RPM package of ups 3.37 for Linux on Intel x86, built on SuSE Linux 7.2, is available at :

An RPM package of ups 3.35 for Linux on Intel x86, built on RedHat Linux 6.2, is available at :

Release version

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

The source, and binaries for certain systems, for the current release and some earlier versions, is available from the master X Window System site and its various mirror sites in the contrib/utils directory :

Please download from the nearest mirror site, which include :

The latest release is also available from Linux software archives such as :

Versions of ups executables for some systems, e.g.Solaris 2.x, are also available from :

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 :


Knwon bugs

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.


Mailing list - information & support

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

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


To subscribe to ups-users, send the following in the body (not the subject line) of an email message to
subscribe ups-users

This 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_net


To unsubscribe from ups-users, send the following in the body (not the subject line) of an email message to
unsubscribe ups-users

This 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_net

If 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-users

If you want to search non-private lists at this server, you can do that by sending a command like:

which string

This will return a list of all entries on all lists that contain "string".


To find out more about the automated server and the commands it understands, send the following command to

If you feel you need to reach a human, send email to


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.


Links to other sites

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. - lots of free stuff: Developer City (free programmers' resources), eCentriCity (free web designers' resources), Software City (free software).


ups song

Ever wondered about the and 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
gets people to the web page from which they can download the MPEG, or listen to it online.

Mark Wheadon (aka bUrt Wheadon)


About these pages...

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 $
SourceForge Logo