Download

go to download webpage

Screenshots

Screenshot #1 Screenshot #2 (old)

Status & News

Project status: still maintained, development has completed.


Update 2007/05/18:

 Debian and Ubuntu:
Install these dependencies:
apt-get install exuberant-ctags libglib1.2-dev libgtk1.2-dev libgnome-dev libgnomeui-dev


Update 2006/11/06:
Version 5.4.20 updated for Linux Fedora 5 and 64-bit systems.

  FreeBSD:
hypersrc is maintained as a FreeBSD port (see download page).

  Linux Fedora 5, 6:
yum install gnome-libs gtk+ glib
yum install gnome-libs-devel gtk+-devel glib-devel

  Linux Fedora 3:
glib-devel-1.2.10-15.i386.rpm
gtk+-devel-1.2.10-33.i386.rpm
gnome-libs-1.4.1.2.90-44.i386.rpm
gnome-libs-devel-1.4.1.2.90-44.i386.rpm
compat-db-4.1.25-6.i386.rpm
imlib-devel-1.9.13-21.i386.rpm
libIDL-devel-0.8.4-1.i386.rpm
ORBit-0.5.17-14.i386.rpm
ORBit-devel-0.5.17-14.i386.rpm

About hypersrc

hypersrc is an open-source (GNU GPL) GUI program for browsing source code. It displays a list of sorted source code tags and a tree view of functions. You can click a tag to hyperlink to its line in a source code file. hypersrc uses Exuberant ctags which supports 33 programming languages though hypersrc additionally supports FORTH and M4.

hypersrc is released under the terms of the GNU General Public License (GPL) Version 2.

Minimum Requirements

  • A UNIX system with GNU development tools, GTK+/GNOME 1.x (not 2.x).
  • Depends on GTK+ 1.2.x and GNOME 1.x which modern distros categorize
    as obsolete or extra packages (hypersrc begun in 1999).
    GTK+/GNOME 2.x isn't backwards-compatible.

    hypersrc has been run on:

    • Linux distros (1999...2007):
      Ubuntu (Feisty Fawn)
      Fedora 3 (x86-32), Fedora 5 (x86-64)
      Red Hat 6.0, 7.2, 8.0
      Mandrake 8.1
      Debian 3.0 (woody)
    • FreeBSD:
      6.2, 4.6.2

  • Exuberant ctags 3.2 by Darren Hiebert.
  • pypersrc won't work with only GNU ctags, but will if Exuberant ctags is
    also installed somewhere (and if necessary the -ctags arg is passed).
    ctags --version (exctags on FreeBSD) will tell you if it's Exuberant or GNU ctags.
    Download Exuberant ctags from my site

To Install and Run

To compile and install from source code:

tar xfzv hypersrc*tar.gz
cd hypersrc
./configure.sh
make install

To browse C code, for example, chdir to where your C source files are, and type:

Hypersrc.pl

For further info, see README.txt, Hypersrc -help, and man hypersrc.

Speeding hypersrc

Hypersrc.pl -fast
Hypersrc.pl -fast -no-functree

To build an optimized executable (but minus assertions & self-checks):

make speed install

Known Problems & Issues

  • Functions are missing in the tree view.

    • Function tree views are supported only for C/C++ source.
    • hypersrc requires the -knr arg to parse K&R style functions.
    • Source code heavily infested with #if directives just won't be parsed correctly.
    • By design, functions (except C++ inline class methods) whose opening braces
      aren't the first char on the line won't be parsed:
      int foo ( int a ) {
      }
      
  • To browse everything in a humongous source tree, such as the Linux 2.4 kernel, hypersrc takes a long time to start and lots of memory.

  • Yes. See also section about speeding hypersrc.
    Try passing any of:

    -fast
    -no-functree : to skip parsing phase but forfeit tree views of functions
    -descend     : to limit the amount of subdirs to descend
    -max-tags    : to limit the amount of tags to be processed
    -exclude     : to exclude some dirs/files
    

  • hypersrc quits silently while trying to jump to a tag.

  • Upgrade to GTK+ 1.2.8 if you are using an older version. GTK+ 1.2.3 definitely has a bug which hypersrc encounters. Other old versions might have this bug also. If this problem still persists, as a last resort, try deselecting the preference: "Misc / process GTK+ events while busy". However, be advised the program won't redraw itself while it is busy.

  • Sometimes, pressing Enter in a find dialog triggers two searches.

  • Keyboard rate too fast?

  • Cases of mistaken-identity appearing in the "called by" tree:

    • Caller really calls a function in another module.

    • All functions with the same name as a caller will be shown as other callers, even if some don't really call this function.

    Unfortunately, such mistaken-identity problems are inherent in a source code browser, because of the unavailability of compile-time info.

  • Rarely, the scrollbar beside a tree will stop working if the tree tries to show too many nodes/leafs.

Trouble-shooting

To compile hypersrc with GDB support, pedantic checking, and verbose warnings:

 make debug install 

To run hypersrc under gdb:

 Hypersrc.pl -gdb 

Bug Reports

e.m.a.i.l

home
© 1999,2008 Jim Brooks
Last modified: Wed Jan 2 15:09:19 EST 2008