Home
Features
Requirements
Compatibility
Screenshots
Documents
Online Example
Download
Project Page
Git
Change Log
Credits
Get ggcov at SourceForge.net. Fast, secure and Free Open Source software downloads
Graphics by GIMP
Valid HTML 4.0 Transitional

This listing is also available as the file ChangeLog in the source tarball.

Sun May 9 15:55:03 2010 Greg Banks

  • Release 0.8.2
  •  
  • Support for gcc 4.4.1 (Ubuntu 9.10), patch from Ken McDonell.
  • Removed the ability to read files produced by gcc -db. This feature was always too fragile as it depended too closely on undocumented and volatile gcc internals. Removed test018 which exercised this feature and has been broken for some time.
  • Char* constness fixes from Ken McDonell.
  • Other minor compilation fixes.
  • Fixed a number of complaints from automake 1.11 about gmake specific features in Makefile.am files.
  • Update CVS ignore files.
  • Update my email address.
  • Update the release procedure document.
  • Fix wrong test name in test022 error message
  • Improve the existing estring unit test and add test023 to actually run it for "make check".
  •  

Fri Jan 8 19:29:58 2010 Greg Banks

  • Release 0.8.1
  •  
  • Support gcc 4.3 file formats.
  • Fix various compile warnings.
  • Make test 018 failure message clearer.
  •  

Sun Jul 2 19:04:17 2006 Greg Banks

  • Release 0.8
  •  
  • Significant improvements to the callgraph diagram layout algorithm, which now generates more visually pleasing results for a wider range of possible callgraphs.
  • When mousing over callgraph nodes in the gtk gui, show a popup containing the same information as the node box but actually large enough to be visible on nontrivial diagrams.
  • Add to the gtk gui a -w option to specify window(s) to open initially.
  • Support file format from gcc 3.4 on Mandrake 10.2.
  • Handle gcc 4.1.1 data file formats.
  • Handle file format from the gcc 4.0.3 in Ubuntu Dapper.
  • Patch by Jim Huang to support gcc 3.4 and gcc 4.1 on Ubuntu.
  • Automatically detect when ggcov is being run from it's source directory and adjust the libglade search path to find the uninstalled glade file first. This avoids the need to build with UI_DEBUG=1 in order to run ggcov before install.
  • Reduce memory usage in various ways, including keeping some strings uniquely in a hashtable, and using u64 instead of string for gcc4.0 function id.
  • Don't rely on the build system providing -Wl,--export-dynamic for libglade to work after the ggcov executable is stripped, instead use a Perl script to generate a C array which maps names to function pointers. This is needed for Ubuntu, and also makes the exe smaller.
  • Centralise the common parts of commandline option processing and interpretation in cov.C. Instead of one recursive flag in each source file containing a main(), there's now exactly one.
  • Combine "graph2win" and "legowin" into "diagwin"
  • Rationalise debug tokens.
  • Reorganise covio_t code.
  • Centralise the dbounds_t structure and some defines in a new header. Move various code from the callgraph diagram to methods of dbounds_t.
  • Add a scene generator which generates no output but performs various geometrical checks for poor diagram layout; particularly useful for objective testing of the callgraph diagram layout code.
  • Add a --dump-callgraph option to tggcov to dump the callgraph in an ASCII form suitable for checking in tests.
  • Add test 15, which exercises the callgraph diagram layout algorithm using a Perl script to generate C code from simple graph descriptions.
  • Running a runtest script with ENABLE_DB_FLAG in the enviroment will enable the -db gcc flag, generating a foo.c.12.bp file.
  • Add test018 which exercises the 12bp callgraph reading code.
  • Fix logic bug: when accounting coverage status of branches, branches cannot ever be partially covered.
  • Fixed compile warnings from gcc 4.1.1.
  • Don't complain about R_386_GOT32 relocs in i386 code.
  • Fix an invalid free in test018 (thanks to Jim Huang for the report)
  • Callgraph handles calls to functions with attribute(pure)
  • Improve filtering of line coverage results in test cases, to avoid spurious test failures due to differing algorithms for counting multi-block lines (the for(;;) problem) and for lone "catch" statements.
  •  

Mon Sep 12 00:21:42 2005 Greg Banks

  • Release 0.7
  •  
  • Handle the gcc 4.0.0 and Fedora Core 4 compiler file formats.
  • Add suppress by comment. New -Y commandline option allows suppressing source lines with a single-line comment containing the specified word. New -Z option suppresses a range of lines starting and ending with the given words.
  • Rejig block graph solving algorithm to handle calls to functions which return a different number of times than they're called, such as exit() or fork() or any function which might eventually call longjmp().
  • Source files in /usr/include and /usr/lib are not counted towards the common path for source files.
  • Handle relative paths to source files in .gcno and .o files.
  • Handle compiling with version 3 of DB, found on some distros.
  • Handle calls to functions marked with attribute((pure)) gracefully.
  • Remove the unhelpful Arc column from the Calls window
  • Remove the long-redundant HAVE_BBG_FAKE_FLAG define and all the code that depended on it.
  •  
  • Fix compile warnings from gcc 4.0.0.
  • Fix memory buffer addressing bugs in the code to scan i386 object files for call graph information.
  • Fix assert failure when built against GTK2 library and the ^W accelerator to close a window is used before the File menu is manually shown.
  • Don't complain about R_386_GOT32 relocs in i386 code.
  • Fix a Free Memory Read found when trying coverage samba4 code.
  • Fix a corner case in the formatting of block lists.
  • Add --version options to tggcov and ggcov-webdb (ggcov itself already has this option via GNOME's popt table).
  • When built against recent libgnome, ggcov's --help output failed to describe the ggcov-specific options. Fix this by pushing the popt options table to gnome_program_init().
  •  
  • Fix ambiguity in function's file scope on summary page.
  • Hyperlinks to source page use URLs cleaned of extraneous query strings.
  • Change the View links on the summary page to buttons, so they show the right page without clicking Update first.
  • Make web interface windows 100% wide.
  • Web interface handles missing or empty tests dir more gracefully.
  •  
  • Add --disable-web option to configure
  • Enforce --disable-gui more strictly
  • Remove a superfluous AC_ARG_PROGRAM, as AM_INIT calls it too.
  • Handle quirks of older automakes.
  •  
  • Loosen expected file comparison test to ignore line counts for function variable lines, to avoid pointless compiler variation in tests.
  • Convert test007 to use expected output rather than compare to gcov output, which miscounts the block which checks the return of setjmp().
  • Add test016 to configure.in
  •  

Sun Jun 19 17:09:27 2005 Greg Banks

  • Release 0.6 (big jump reflects lots of changes)
  •  
  • Ported to Fedora Core 3, SUSE Enterprise Linux 9.
  • Support new gcc 3.4 .bbg and .da format (actually 2 formats each, bigendian and littleendian).
  • First attempt at supporting the file format generated by gcc 3.3.3 on Mandrake 10.x.
  • Add a new window to ggcov to show a Lego diagram.
  • Added a simple PHP web interface for navigating coverage data
  • Add a second package ggcov-web and package all the web bits there.
  • Scan executables to find required shared libraries, and recursively scan shared libraries to find their required libraries, and scan all of those for coveraged source.
  • Added --solve-fuzzy flag to ggcov, tggcov and ggcov-webdb to ignore inconsistencies in arc counts on a per-function basis. Useful for samples from kernel coverage on multiprocessor machines.
  • Hide the Arc column in the Calls window by default, to match the initial state of the check menu item.
  • When scanning object files for calls, don't record magic calls to __cxa_throw() et al that g++ inserts.
  • In the Calls window, don't show calls from blocks that have no source associated with them; this hides the magic calls to __cxa_throw() et al that g++ inserts.
  • cov_arc_t::finalise() suppresses arcs which are calls to any of the g++ internal exception handling functions like __cxa_throw().
  • Handle PIC code relocs when scanning objects to build the callgraph.
  • Grey out the View buttons on the Calls window when appropriate.
  • Package the tggcov executable
  • Small improvement to the formatting of block listings in the Source window.
  • Icon looks marginally prettier
  •  
  • Convert cov_function_t::list_all() to use the templated C++ list wrapper
  • Added status() method to cov_block_t, cov_arc_t, cov_function_t, cov_file_t. Calls calc_stats().
  • portability: use /usr/bin/env to find bash for shell scripts
  • Abstract differences between GTK1 and GTK2 ways of setting tree/list column visibility into ui_list_set_column_visibility().
  • Centralise two copies of nearly identical code to populate a combobox with names of functions.
  • Check for gnome_program_init() in -lgnome-2 as well as -lgnome.
  • Calculate the GUIPROG variable in configure instead of Makefile.am
  • Moved the status_t enum from class cov_line_t to a new global class cov.
  • Converted low-level cov file IO code to C++, mostly to enable run-time switching between bigendian and littleendian via C++ virtual functions, for the gcc 3.4 format.
  • Replace Lego and Callgraph windows with a unified Diagram window which uses the diagram_t abstraction. No user-visible differences.
  • Change from gnome_config_*() API to gconf, when detected by autoconf
  • Added a schema file for gconf.
  • ggcov.desktop no longer needs full path to icon
  • Drop -Wmissing-prototypes as gcc3.4 complains when given it in C++ mode
  • Added --without-bfd configure option to make life easier for the PLD guys.
  • Combine GTK1 and GTK2 functions for getting double-click data.
  • Check whether the old gtk1.2 automake macros exist before using them
  • Rationalised icon formats: PNG to install. XPM to #include
  • Detect the name of the raw size field in bfd's asection struct, as it changed.
  • Removed unnecessary #includes of covio.h
  • Also remove configure for the buildrpm --force option.
  • Make finalise() calls descend all the way to cov_arc_t level.
  • Use EXTRA_PROGRAMS so the source tarball builds properly
  •  
  • In tests, when comparing tggcov output vs expected, filter out line counts for the { and } lines at the start & end of functions.
  • Test code handles slightly different text output from gcov
  • Test feature: if $RPLATFORM is set when running tests, use all the compiled programs, .bbg and .da files from a remote platform.
  • runtest doesn't use a logfile anymore
  • Added --disable-gui configure option to allow for headless testing
  • Added test for coveraged code in shared libraries.
  • portability fixes to enable platform.sh to work on Solaris
  • Added support for using the standard automake "check" target.
  • reordered platform string to put version last
  • Add the test/ hierarchy to the source tarball.
  •  
  • Fix a memory leak in the scanning of object files.
  • Portability fix: on some platforms, getc() and ungetc() are macros. Rename member functions of cpp_parser_t to avoid trouble.
  • In configure, calculate variables CPU_DEFINES and OS_DEFINES to enable CPU-specific and OS-specific code respectively. Doesn't support cross-compile.
  • valgrind-run supports valgrind version 2.
  • Fix the dist: target yet again.
  • Fix bug where estring::truncate_to() could not handle a new length longer than the old length.
  • Fix bug where expanding an estring by a large amount fails to allocate enough space and overruns the buffer.
  • Add append_vprintf(), insert_vprintf() and replace_vprintf() to estring.
  • Fix UMR in estring const constructor.
  •  
  •  
  •  

Sun Sep 26 20:48:49 2004 Greg Banks

  • Release 0.3
  •  
  • Added a number of text reports to ggcov, tggcov.
  • Added -o option to ggcov, tggcov (same as gcov's -o option).
  • Summary window shows percentages of partially covered entities.
  • Split Summary window numeric display into separate columns for proportion and percentage, to get better visual alignment.
  • Added Blocks column to the Functions window.
  • Added Blocks and Functions columns to the Files window.
  • Added support for yet another .bbg/.bb/.da file format, this time emitted by gcc 3.3.2 in Fedora Core 1.
  •  
  • Source lines which depend on any of the cpp symbols in the suppression set, are suppressed. The -X commandline option
  • adds a cpp symbol to the suppression set.
  • Arcs from suppressed lines are suppressed; functions are suppressed if they contain no unsuppressed lines.
  • Suppressed source lines are shown in a different colour.
  •  
  • Reorganised BFD and platform-specific call scanning code.
  • Various minor bug fixes.
  • Checked in a bunch of tests which have been sitting around.
  •  

Tue Nov 4 23:55:52 2003 Greg Banks

  • Release 0.2.2
  •  
  • Added simple man page to document commandline usage.
  • Fixed bug where callgraph scanning found no calls ever.
  • Replaced most #ifdef DEBUG debugging prints with runtime prints. with commandline selection of debug features.
  •  

Sun Aug 3 18:37:40 2003 Greg Banks

  • Release 0.2.1
  •  
  • Fixed bug where stabs32 filename scanning code was never linked in, so ggcov couldn't be given an executable as an argument.
  • Added a warning when configure falls back from GNOME v2 to v1.2.
  • configure check for the popt library works on platforms where libpopt.so is not in /usr/lib but in the same nonstandard location as the GNOME libraries.
  • Removed acconfig.h. We can do without it on autoconf 2.13 and it makes autoconf 2.57 whine mightily.
  •  

Tue Jul 22 21:43:30 2003 Greg Banks

  • Release 0.2
  •  
  • Full support for all features in GTK2.
  • Removed the --enable-gtk2 configure option; uses GTK 2.0 if its installed and recent enough otherwise fallback to GTK 1.2.
  • Fixed colour coding of list rows in Files and Functions windows in gtk2.
  • Pushed ifdef code for dealing with GtkText in gtk 1.2 build versus GtkTextView in gtk 2.0, down into new ui_text_*() functions. Source and Licence windows use new ui_text_*() functions. No GTK2 ifdefs.
  • Fixed compile warning in GTK2 port.
  •  
  • Added GNOME .desktop file (thanks to Dag Wieers) and a 63x63 desktop icon.
  • ggcov handles file:// URLs on the command line so it can be invoked by dragging files or directories from Nautilus onto its GNOME desktop icon.
  • Default action if no files on commandline (e.g. user double-clicks the desktop icon) is to show the File->Open dialog and exit if files are selected (used to be the same as "ggcov .").
  •  
  • User can load source, objects or directories into ggcov by dragging and dropping them from Nautilus.
  • Added File->Open dialog to allow user to select executables, source files or directories. Files can be loaded in multiple passes, e.g. from multiple invocations of the File->Open dialog.
  • Added MVC module.
  • Class cov_file_t provides an object to be listened to for MVC notifications of when the global set of files changes.
  • All windows are notified of changes to the global files set by having their populate() method called, which rebuilds the display from scratch.
  •  
  • Added support for building RPMs on RedHat 9.
  • Support for autoconf 2.57 (RH9).
  • Fixed library order bug which broke build on RH9.
  • Encode into the RPM filename the name of the Linux distro where built.
  • Only one of the two glade files is packaged into the RPM.
  • Used %configure in spec file. Required switching from overloading prefix to DESTDIR in %install stage.
  •  
  • Added ptrarray_t, a templated wrapper around glib's GPtrArray.
  • Converted most uses of GPtrArray to ptrarray_t.
  •  
  • Reorganised data structures. There is now a per-line class cov_line_t, an array of which is kept per-file. It contains the list of blocks for that line as well as caching the calculated count.
  • cov_file_t now created on demand for secondary files, e.g. header files with inline functions.
  •  
  • Fixed bug which failed an assert if user selected a range of uninstrumented lines in the Source window and used the Summarise Range command.
  • Fixed bugs with text window line selection in gtk2 port.
  • Removed spurious #ifdef which was always disabling the config file.
  • Made formatting in Source window a little less dependent on hardcoded column widths.
  • Removed last traces of the screenshot_mode option.
  • Fixed bug where Files window's populate() method didn't handle being called twice.
  • Added argv0 so test programs will link.
  •  

Fri Jul 11 01:51:32 2003 Greg Banks

  • Release 0.1.8
  •  
  • Fixed interpretation of relative filenames in .bb files.
  • Added assignment operators to class estring.
  • Fixed broken compile when libbfd missing.
  • When showing or hiding columns in the Source window, preserve the scroll position instead of flipping back to the start.
  •  

Wed Jul 2 22:30:45 2003 Greg Banks

  • Release 0.1.7
  •  
  • Fixed bug in detection of gcc 2.96 braindamage which spuriously triggered the error message on gcc 3.3.
  • Fixed bug where Source window wrap was disabled for the GTK2 build even when it didn't need to be.
  • Enabled the Source window File->Save As command for gtk2 build, which also removes some runtime warnings when the Source window is opened.
  • Captured the log output for a new GTK2 log domain.
  • Simplified log initialisation code.
  •  

Wed Jul 2 22:30:45 2003 Greg Banks

  • Release 0.1.6
  •  
  • Initial support for new gcc 3.3 bbg and da formats.
  • Make cov_file_t::read_bbg_function() more robust in the face of bad data (e.g. the new .bbg file format).
  • Added support for moving machine-specific code into subclasses of abstract generic classes, including a factory class. Moved the stab32 parsing code into a machine-specific subclass.
  • Updated strings to mention ggcov not cant.
  • Improved debugging prints.
  • Reorganised Makefile to build two archive libraries and link ggcov and test programs from there, rather than specifying all the source for every test program.
  • Added test program newbbgdump to dump the new gcc 3.3 bbg format.
  • Added test program tggcov to write coveraged like gcov, for automated comparison of basic block accounting.
  • Moved the summarise() debug code to cov.C:cov_dump().
  • Fixed FMR while parsing arguments in gtk1.2 build.
  • Fixed unused variable warning in argument parsing.
  • Fixed compile bug in debug message in fileswin.C.
  • Fixed bug in declarations of describe() methods in subclasses of cov_scope_t which only showed up in high debug levels.
  • Strip '&' as well as '*' when normalising mangled .bbg names.
  •  

Sat Jun 14 00:22:17 2003 Greg Banks

  • Release 0.1.5
  •  
  • Autoconf detects presence of gtk_text_buffer_select_range() and handles its absence as gracefully as possible.
  • If libpopt is missing, supply our own trivial implementation. This allows only parse_args() to exist while handling building on systems with gtk2 and no libpopt.
  • Fixed a couple of bugs gtk2 in the Source window where selecting items from the Filename or function menus would SEGV.
  •  

Sun Jun 8 16:23:01 2003 Greg Banks

  • Release 0.1.4
  •  
  • Made ggcov more robust when faced with problems finding or loading data from object files; emits warning messages and keeps going rather than failing asserts.
  • Recognise file extensions .cc .cxx and .cpp as source code.
  • Added a wrapper for the C++ demangling code in libiberty and a function to normalise mangled names.
  • Demangle names from .o files, normalise mangled names from .bb files.
  • Ggcov doesn't use the "fake" arc flag from the .bbg data file anymore but detects call arcs using the arc's destination block. With a working gcc this makes no difference; with the braindead 2.96 ggcov can detect most rather than none of the call arcs.
  • Ggcov now detects broken data files written by braindead gcc 2.96, and emits a warning message and skips reading the object file.
  • Ggcov will search directories for source files recursively; disabled by default, enabled with the --recursive/-r option.
  • cov_file_t and related objects can be deleted, correctly & efficiently. Needed for directory scanning to be robust in the presence of source which isn't compiled, or is compiled but not linked.
  •  
  • Added hashtable_t templated wrapper for GHashTable, and replaced all uses of GHashTable with the wrapper.
  • Functions window can use a typesafe list now.
  • Replaced all uses of the strassign() & strdelete() macros with class string_var.
  • Fileswin uses tok_t tokenizer instead of strtok().
  • Added operator to cast estring to const char*.
  • Minor de-crufting.
  •  
  • Created a cov_scope_t class which abstracts the scoped statistics summary. Moved the overall and range scope code from global functions into private members of derived classes of cov_scope_t.
  • Call Graph window uses scope objects instead of calling calc_stats().
  • Added cov_compound_scope_t for aggregating multiple scopes, cached.
  • Files window and functions window use scope objects instead of calling calc_stats() methods and caching the results.
  • cov_file_t::calc_stats() and cov_function_t::calc_stats() are now private; they are only needed by the scope objects, which are friends.
  •  
  • Fixed bug where double-click in Files List window didn't work.
  • Fixed memleak in the Call Graph window.
  • Fixed argument parsing code.
  • Fixed memleak destroying cov_blocks during recursive source scan.
  • Fixed bug in debug output.
  • Fixed broken view menu checkboxes in gtk2 build.
  • Fixed many bugs with gtk2 port. Most windows now work passably rather than coredump when first shown.
  • Simplified coding of list & tree double-click handlers, also hides most of the gtk/gtk2 differences.
  •  

Sat May 31 17:32:17 2003 Greg Banks

  • Release 0.1.3
  •  
  • Fixed bug in string_var class which randomly broke data file loading.
  • Removed warnings in -DDEBUG build.
  •  

Fri May 30 00:56:06 2003 Greg Banks

  • Release 0.1.2
  •  
  • Added title column buttons to source window, and a View menu item to hide them.
  • Reimplemented Files window's tree mode; now shows accumulated statistics on directories.
  • Added a menu item to the Source window to save the source with the currently selected annotations.
  • All directories mentioned on the commandline are searched for all .bb .bbg .da and .o files, in the given order and always starting with the source file's own directory. This gives the functionality of "gcov -o".
  • Rewrote file_make_absolute() to normalise out "." and ".." from pathnames.
  • Removed a stray TAB from a GUI label.
  • Centralised the File->Close and File->Exit callbacks in class window_t.
  • Added string_var and tok_t classes for string manipulation.
  • Portability fixes.
  • Minor code cleanups.
  •  

Mon Mar 17 14:54:46 2003 Greg Banks

  • Release 0.1.1
  •  
  • Added a tree mode to Files window, which displays source files from multiple directories in a tree format.
  • When the Call Butterfly window is shown, initialise the hpaned widget so that both the Calls From and Calls To lists are visible.
  • Call Graph window shows whole graph when graph is nontrivial. Layout algorithm still sucks.
  • Hacked around bug with new argument parsing where gtk/gnome options are not stripped out before ggcov parses the arguments.
  • Fixed bug which lost list column header labels on recent gtk 1.2's.
  • Fixed bugs where Call Graph window would SEGV or loop when the coverage data contained function call loops.
  •  

Tue Mar 11 13:54:45 2003 Greg Banks

  • Release 0.1
  •  
  • Compile ggcov with the C++ compiler.
  • Converted cov.[ch] to C++, split up into multiple source files.
  • Added base class window_t and converted all the GUI windows to be derived classes of window_t.
  • Converted estring to C++.
  • Added C++ list_t<> templated wrapper for GList.
  • Added list_t::sort().
  • Moved ggcov.c:read_gcov_directory() -> cov.c:cov_read_directory().
  • In many different places the internals details of how cov_file_t's, cov_function_t's, and cov_block_t's are related was unnecessarily exposed. Added cov_file_num_functions(), cov_function_num_blocks(); enforced use of cov_file_nth_function() & cov_function_nth_block().
  • Separated cov_callnode_t and cov_callarc_t into their own files and converted them to C++.
  • cov_get_count_by_location() returns a 4-way enum instead of of a boolean, indicating the coverage status of the line. One of the enum values indicates partially covered lines, i.e. multiple blocks appear on the line and not all of them are executed.
  • Renamed sourcewin_t::show_file() to show_filename() and added a new show_file() which takes a cov_file_t. Summarywin and fileswin use the new function.
  • Converted fileswin.C:file_rec_t to C++.
  • Provided global operator delete which provides no value except to shut up valgrind and Purify about mismatched frees.
  • C++ compiler noticed that mode_t is unsigned so returning -1 through it is a bug...so changed return type of file_mode() to int.
  • Converted sourcewin.C:sourcewin_hacky_rec_t to C++.
  • Removed the global filenames list and replaced with a list of cov_file_t's iterated by cov_file_t::first().
  • Converted functionswin.C:func_rec_t to C++.
  • Extended file_change_extension() to allow the old extension to be specified as NULL which uses any existing extension.
  •  
  • Uses c99's uint64_t where available.
  • Centralised definitions of unsigned 32 & 64 bit ints.
  • Provided macros in covio.h for formatting covio_u{32,64}_t.
  • Added define COV_COUNT_MAX which is maximum value of a count_t.
  • Centralised 64-bit integer printf format strings.
  •  
  • Partial gtk2 port derived from code contributed by Havoc Pennington.
  • GNOME colour pickers disabled for gtk2.
  • Canvas-based call graph window disabled for gtk2.
  • Config file reading disabled for gtk2.
  • Removed useless --glade-path option.
  •  
  • Added cov_is_source_filename() to test whether a filename matches the known source file extensions.
  • Renamed cov_handle_c_file() -> cov_read_source_file().
  • Added cov_read_object_file() which uses the .stab and .stabstr ELF sections to extract a list of source filenames with full paths.
  • Added cov_pre_read() by analogy with cov_post_read(); will be useful one day.
  •  
  • Added infrastructure for program preferences, saved and loaded using gnome_config_*() routines.
  • Added preferences dialog to edit preferences.
  • Added to prefs foreground and background colours for colour coding various items according to coverage status.
  • Tweaked some default colours for better look.
  • Summarywin uses colours from prefs.
  • Functionswin colour codes list entries using colours from prefs.
  • Fileswin colour codes list entries using colours from prefs.
  • Sourcewin uses colours from prefs.
  • Callgraph2win uses colours from prefs.
  •  
  • Added a second Call Graph window which actually has a graphical presentation rather than navigable distribution to callers/callees. New window present calls as nodes in a call graph, with function name, filename, and coverage show textually in the node. Nodes are colour coded red, yellow or green according to the function's line coverage. Nodes with no instrumented source lines are grey. Arcs are colour coded according to arc coverage. Layout is fixed and very primitive.
  • Changed the Windows menu names of the two call graph windows to be more indicative and less ambiguous: callgraphwin announces itself as "Call Butterfly" and callgraph2win as "Call Graph".
  • Attempted to improve the call graph window layout algorithm.
  •  
  • Callgraphwin list frame labels are easier to understand, e.g. "Called from" instead of "Distribution to Ancestors".
  • Sourcewin's block column collapses runs of consecutive blocks into a range, e.g. "3-6" instead of "3,4,5,6". Avoids a lot of column overflow.
  • Split Function combo box into From Function and To Function boxes, both of which have an "All Functions" wildcard item which is the default.
  • Reorganised columns in Calls window, now has From To Line Arc Count.
  • Moved list of filenames and functions in source window from menubar to a new toolbar.
  • Added View->Toolbar to the source window to control whether the toolbar is visible (visible by default).
  • Added to prefs a boolean controlling whether a new source window is popped up every time or an old one is reused.
  • Added preference to reuse the summary window.
  • Added concept of minimal file names, where only the minimal unique suffix of a filename is displayed to the user.
  • Double-clicking on a row in the Calls list shows the from source line.
  • Visual improvements to the About window.
  • Added View menu to Calls window with a check menu item for each column. Arc column is off by default.
  • Added icon for all toplevel windows derived from logo.xpm.
  • Added ui.c infrastructure for app to select a default icon.
  • Added infrastructure to debug GTK/Glib log messages.
  • Added to source window menu items to summarise the source file, the selected function, or the selected source lines.
  •  
  • window_t::show() will also raise a window.
  • Reduce unnecessary processing on windows that are reused by only calling populate() the first time a window is shown.
  • Added default definitions of _ and N_ in preparation for gettext.
  • Dealt with stupid gnome header files redefining _ and N_.
  • Made cov_function_t::name() const like it always should have been.
  •  
  • Adding version.m4 for the website.
  • Used aclocal.m4 the way it was intended.
  • Install & distribute the logo pixmap.
  • Removed autoconf stuff from .spec file setup section.
  • For gcc, add a bunch of warning options to $CFLAGS.
  • Added bbdump program to help debug .bb file problems.
  • Ignored a couple more generated files.
  • The .cvsignore and .gdbinit files are distributed.
  • Various minor configure.in/Makefile.am updates from Havoc Pennington.
  •  
  • Fixed bug which SEGVd when double-clicking on a function in the functions window which has no executable lines.
  • Fixed buffer overrun bug in sourcewin due to my misunderstanding the return value of snprintf().
  • Fixed bug which incorrectly assumed that the last function listed in the coverage data file would contain the last source line in its source file. Now keep an explicit last location variable.
  • Fixed bug found by valgrind where selecting the last line of a source window overran the offsets_by_line_ array.
  • Fixed bug where sourcewin_t::show_lines() didn't show the window.
  • Worked around a bug where cov_arc_get_from_location() sometimes returned 0 unexpectedly.
  •  
  • Removed superfluous include of estring.h
  • Added estring_replace_all() instead of the poorly implemented attempt in ui.c.
  • Fixed minor warnings.
  • Made some debugging prints appear less frequently.
  • Removed some asserts from list_t dtor, valgrind is a better debugging tool.
  •  

Mon Dec 3 12:07:12 2001 Greg Banks

  • Release 0.0.7.
  •  
  • Builds a callgraph from the information read from various files, including calls to functions not covered (like printf).
  • Added a window to explore the call graph. Shows distribution to callers and callees in clists; double-clicking navigates to the new function.
  • Added a Calls window which shows the call coverage per-call for a given function.
  • Ggcov uses the BFD library to read object files, using relocs, contents and symbols for text sections to figure out names for function call arcs in the block graph.
  • Added option to Source window to show block numbers.
  • Added ulcmp() and ullcmp() to help sorting on unsigned longs and unsigned long longs respectively.
  • Renamed xmalloc() -> gnb_xmalloc() to avoid possible clash with function of same name in -liberty.
  • Added ui_combo_set_current_data().
  • Added listclear() macro which deletes GList structures like listdelete() but does not call any dtor.
  • Fixed a few minor problems with debugging prints and warnings.
  •  

Fri Nov 30 12:26:55 2001 Greg Banks

  • Release 0.0.6
  • Added a Files List window analagous to the Function List window.
  • Added fixed Windows menu items to create new Summary, Source, File List and Function List windows.
  • Initial window population is now just an overall summary.
  • Sortable column support now handles the case where not every column is sortable (backport from ggui).
  • Added a TODO list of some ideas.
  •  

Tue Nov 27 11:53:14 2001 Greg Banks

  • Release 0.0.5
  • Added progress bars to show test coverage stats in the Summary window.
  • Progress bars display red/green to color code coverage stats. Had to subclass from GtkProgressBar to achieve this.
  • Added a Functions List window to show all the functions in all the files, with line call and branch coverage results. Clicking on columns sorts the list by that column. Double-clicking on rows shows the source for that function.
  • Added support for having an up or down arrow in the current sort column of a clist. Clicking on the columns does the expected thing with sorting.
  •  

Sun Nov 25 19:44:38 2001 Greg Banks

  • Release 0.0.4
  • Added GUI to show summary of coverage statistics at overall, file, function, and range scope.
  • Various small GUI improvments.
  •  

Sat Nov 24 01:34:43 2001 Greg Banks

  • Release 0.0.3
  • Added GUI to browse source annotated with line execution counts (only).
  • Built RPM.
  •  

Fri Nov 23 15:41:28 2001 Greg Banks

  • Release 0.0.2
  • Split source code up from one big .c file.
  • First check into CVS.
  •  

Thu Nov 22 17:39:15 2001 Greg Banks

  • Release 0.0.1
  • Reads .bb, .bbg, and .da files to construct data structures
  • Annotates C files with line counts, identical results to gcov.
  •  
  •  


Updated: 23 Apr 2011 . Copyright © 2001-2011 Greg Banks. All Rights Reserved. .