* Changed documentation license from GFDL to GPL (github #6).
* Fixed a hang on MacOS when quitting cgdb while inferior is running
(github #1 and #5).
* Fixed a crash when pressing 'n' in source window (github #5).
* Fixed a bug opening files (and toggling breakpoints in files) with
special characters (e.g. space) in their names.
* Fixed a compile error on Cygwin 1.7 (signature for path conversion
* Fixed a segfault on 64-bit systems in rline.c due to a missing
prototype of cgdb_malloc. Thanks to Pietro Cerutti for reporting
and diagnosing this one!
* Fixed a bug in the file dialog. When searching for a file,
and you hit enter to select it, CGDB would sometimes skip to
the next file that matches and open that file instead.
* CGDB should now build out of the box on Cygwin again.
CGDB used to only support building against curses.h. Now
it also supports building against ncurses/curses.h.
* No longer set the prompt to (gdb) on startup.
* Turn autosourcereload to on by default. This matches GDB's behavior.
* CGDB should successfully build on Mac OS X 10.5.
Thanks Kyle McKay for sending in this patch.
* Add support for :up and :down in the cgdb status bar.
Thanks Benoit Pierre for reporting this.
* Enhanced tgdb in a2 mode. It now understands GNAT's
pre-instance-choice, instance-choice, post-instance-choice extension.
* Made searching and :commands a little more vi-like. If you abort a
search, you can still recall the last search with 'n' or 'N'. If you
backspace to the beginning of the line, a :command or /search is
* Added some new cgdb commands.
:c is now a synonym for :continue
:f is now a synonym for :finish
:n is now a synonym for :next
:r is not a synonym for :run
:s is now a synonym for :step
:start is a new command that will send "start" to the debugger
:kill is a new command that will send "kill" to the debugger
* Shortcut mode has been removed from cgdb. If you liked it, you can
put these commands in your cgdbrc file,
map r :run<CR>
map c :continue<CR>
map f :finish<CR>
map n :next<CR>
map s :step<CR>
and you will get the same functionality. Do not forget that,
F5 is the same as 'run'.
F6 is the same as 'continue'.
F7 is the same as 'finish'.
F8 is the same as 'next'.
F10 is the same as 'step'.
are always available.
* Added a feature to CGDB which allows it to ask readline what key
sequence it uses for the Home and End keys. That way, if the terminfo
database is wrong, but the OS vendor modified /etc/inputrc, CGDB will
have a working Home and End key.
* CGDB fully supports the use of maps now. The feature is similar in
nature to the vim map feature. It supports map, unmap, imap
and iunmap. The map/unmap work in CGDB mode and the imap/iunmap
work in GDB mode.
* Added the cgdbmodekey configuration option. This allows the user to
change the key that switches them from GDB mode to CGDB mode. The
default value is the Escape key. This is useful for users that want
to use readline in vi-mode.
* Fixed a bug in CGDB where the Insert and Delete keys were not
recognized properly all of the time.
* CGDB can now be compiled with -jN option. It would fail previously.
* CGDB should now build on freebsd with out any patches.
* Added a new highlighting group, SelectedLineNr. From the documentation:
This represents the group that is used when CGDB is displaying the
currently selected line. This is the line that the cursor is on.
* CGDB shuts down now when it receives C-d (control d), just like GDB
* Changed the GDB prompt from "(tgdb)" to "(gdb)". I think users
will be more comfortable with "(gdb)".
* Fixed a serious bug in CGDB. After the user entered a command
CGDB would not accept any more commands. This would only
happen sometimes, if at all. This is due to the fact that CGDB
had a bug in it that was sensitive to the amount of data that
the read system call returns to it.
* Fixed a bug in CGDB where it would not show a file in the
source viewer if there was a space in the path.
* Removed the escdelay option. It has been replaced by the
timeout, timeoutlen, ttimeout and ttimeoutlen options. Please
see the CGDB manual for more documentation on these options.
* Fixed a bug in libkui. If the user quickly typed ESC followed
by an 'o' while in the GDB window, the 'o' character would not
get processed by CGDB until another character was hit.
* CGDB has improved it's -d (Set debugger to use) command line
option. CGDB used to force the user to have a space between the
-d and the debugger to use, like "cgdb -d /usr/bin/gdb". Now the
user can also start CGDB like "cgdb -d/usr/bin/gdb".
* CGDB now honor's the '--' command line option, which will allow the
user to explicitly say when they want to end passing arguments to
CGDB and begin passing arguments to the debugger.
* Fixed another bug in the configure script. If the getopt.h header
file is not available on the system, then CGDB will fail to configure.
It should finish, and most likely build successfully.
* Fixed yet another bug in the auto tools scripts. cgdb-0.6.3 would
improperly install gdbmi_driver if make was invoked like
'make DESTDIR=/foo install'.
* Fixed another bug in the configure script. If the curses.h header
file is not available on the system, then CGDB will fail to configure.
It would previously configure and then end up with a compile error.
* CGDB will no longer crash if you attempt to do a regular expression
search with / when there is no file in the source viewer.
* CGDB now uses a psuedo terminal (PTY) to start GDB on, instead of
using a pipe. Jens Frederich reported that on a Mac, typing Ctrl-C
while the inferior was running would cause GDB to shut down, thus
causing CGDB to shut down. This patch fixes that problem. At the
same time, this patch caused GDB to ask the user several other
questions regarding shared breakpoints, and quiting while the
inferior is running. Thus, CGDB acts more as if you were just using
* CGDB is now maintained in a subversion repository instead of a
CVS repository. Although this might not appear to effect end users,
it is possible that there will be problems associated with this
switch. For this reason, I have documented this here.
* Fixed another bug in the configure script. CGDB should now be able
to configure itself on a Mac. Thanks to Jens Frederich for finding
and reporting this problem.
* CGDB no longer packages the generated auto tool files in CVS. However,
the distributions will have these files. This means you will need
autoconf, autoheader and automake installed to compile CGDB from CVS.
* CGDB now compiles according to the c89 standard. This should help with
porting to older systems.
* The file cgdb.txt is now installed into $PREFIX/share/cgdb/cgdb.txt. This
is the file CGDB will now use to display the manual when :help is typed.
This prevents CGDB from copying the data into the users home directory.
* CGDB should run on solaris 2.5 again. I don't think it would since
* Fixed a bug in the configure script that was probably added in .6.0
when the large readline integration was done. It was possible for
readline to choose the wrong termcap library, because of a bad
autoconf macro that CGDB was using. This could potentially cause the
screen to get corrupted.
* Fixed a bug in the syntax highlighter for C strings. A line like
char *s = "\""; would cause the highlighter to break and most of the
file after that would be displayed in red (string literal color).
* The message 'CGDB had unexpected results, ...' will no longer be
displayed when CGDB can not parse a breakpoint. This message was being
displayed when a watchpoint was issued by the user. It does not fix any
bugs though, just stops the message from being displayed.
* An improvement for tab completion support. With certain versions of GDB,
an extra line "server complete ..." would be added to the list of
possible completions. This is no longer added. I believe this would
only happen with really old versions of GDB.
* Improved tab completion support in readline for quoted data. For
instance tab completing C++ member functions like b 'foo::b<tab>
will now produce b 'foo::bar()'.
* Improved tab completion support. This comes in 2 forms. First, CGDB
honors the readline variable rl_completion_query_items. If the number
of completions is greater than this variable, then the user will be
asked if they want the completion to happen. Second, after each page of
completions, the user will be asked if they want more completions to be
displayed or not.
* Thanks to Steve Folta for sending in a patch which added support in CGDB
for configuring the syntax colors. The colors used to be hard coded and
could not be changed. Now just use the ":highlight" command to change
the default colors. There is a new section in the manual called
"CGDB highlighting groups" that describes the new functionality.
* Again, thanks to Steve Folta for getting CGDB to run on terminals with
background colors besides black. CGDB used to paint the terminal
background color black regardless of what it was. Now it respects the
background color. This feature only works when linked to ncurses. If you
have curses, CGDB will force the background black.
* CGDB broke it's terminal resizing functionality in cgdb-0.6.0. This is
now working again. The bug was introduced while bringing readline into
the same address space as CGDB.
* The man page now get's installed when 'make install' is done.
* There is a new manual for CGDB. The text version is located in
cgdb/doc/cgdb.txt. The info version is available at cgdb/doc/cgdb.info.
The text, html, pdf, info and possibly other versions are avialable at
* There is a new CGDB man page. It is located in cgdb/doc/cgdb.1.
* Fix a crash in CGDB if the user would type ':e' or ':edit' in the
source window, and the source window was empty. This crash is considered
not very significant, since I can't understand why the user would try to
refresh the file, if it didn't exist.
* Removed the :q! and :quit! commands, since they don't do anything
different than :q or :quit.
* Fix a bug regarding the CGDB source viewer displaying breakpoints. If you
used the file dialog to open a file, and the file was an absolute
path, CGDB would display the file. If it was the first time CGDB
encountered this file, then when you set a breakpoint, CGDB would not
display the line as having a breakpoint in the source window, even though
the breakpoint was actually being set. This is now fixed.
* CGDB now supports getting the initial line, as well as the initial
file that GDB is on when it first starts the inferior. It used to only
determine the initial file.
* CGDB now supports when the terminal does not have control flow turned
on. If control flow (XON/XOFF) is off, the ^s and ^q will go directly
to readline instead of freezing and restarting the terminal.
* CGDB now allows the user to use the \ character for line continuation
purposes. GDB handles this and now CGDB also handles this. Before this,
CGDB would break if the user attempted to do line continuation.
* CGDB no longer needs to do a fork to communicate data back and forth to
readline, it runs readline in it's own process context. This is a huge
improvement because it means that when you run CGDB you should only see 1
process executing instead of the usual 2.
* CGDB now supports tab completion. This has been a long awaited missing
feature of CGDB.
* CGDB now depends on readline 5.1.
* Fix a bug in the c/c++ syntax highlighter. If a file had "\\" as a
string literal, the CGDB syntax tokenizer would be built incorrectly
resulting in incorrect file highlighting.
* CGDB now can detect the version of readline that it is going to link against.
By doing this, it can alert the user at configure time if the readline version
is OK to build CGDB with. If it is not OK, configure will fail.
* CGDB has changed it's user interface in a way that is not backwards compatible.
The 't' key, now sets a temporary breakpoint. The 't' key used to put CGDB into
insert mode in the TTY window. Now 'I' does that.
* CGDB is now capable of setting a temporary breakpoint thanks to Marcel Lanz.
He sent in a patch with the functionality. Hitting 't' set's a temporary breakpoint.
* It was reported that the "Windows" Key would cause CGDB to shut down.
This has been fixed.
* Added a new 'arrowstyle' option, see README for documentation
* Add the ^l command to the Source window. CGDB will now clear and redraw
the screen when this command is received.
* It is now required to have the GNU history library in order
to configure CGDB successfully. This was always the case, but the
configure checks wouldn't catch it.
* Get readline configure check to only look for libreadline. Not libedit, ...
Future version of CGDB will depend on functionality that only readline will
* Attempt to get autoconf/automake machinery working with command,
make DESTDIR=... install. This should simplify the job of package maintainers.
* Added the --with-readline-prefix autoconf option. This makes configuring CGDB
much easier when readline is in a non standard place.
* Fixed major bug in CGDB-0.5.1 that prevented it from running on Solaris 9,
FreeBSD 5.2.1 and probably many others. CGDB would hang when trying to read
input. This bug made it impossible to use CGDB on those platforms. libkui is
the cause of this problem and was a replacement input library for CGDB in
cgdb-0.5.1. The bug is now fixed.
* fixed crash when user tries to set a breakpoint on a file that's not
a source file. This would happen if you typed ':help' to get into the
help, and then tried to set a breakpoint using the spacebar.
* obsolete the b and f commands. These were responsible for moving between
the previous and the next source file. They made CGDB unstable and I don't
think they were in the spirit of a vi/vim clone.
* fixed an annoying bug that appeared while searching for a string. If you
canceled the source view regex search by hitting ESC, 2 bad things would happen.
You would end up on the line that you cancelled at
The currently displayed line would stay the line you can cancelled at, even when
you start moving around again.
* reworked the signal handling code when GDB dies. Now CGDB handles the SIGCHLD
and passes the signal notification to TGDB. This fixes a race condition that
occurred, even though the race condition appeared to be harmless.
* Several memory runtime fixes found thanks to valgrind. This could potentially
fix crash's that I just never ran into.
* Fix a bug in the c/c++ syntax highlighter. If a file had a dos file format
and the C++ style comment // was used, then the file displayed would be
completely unreadable. This is because the trailing '\r' would get grouped with
* Fix CGDB command line interface. If the user invoked CGDB like this,
'cgdb --args ./main one two three', then CGDB would hang or crash. This
was because it use to add extra command line options to GDB on the end.
Now it prepends the options to GDB, so that the --args command line
can still be honored.
* Added new logger interface. This traps all errors to a file or
a file descriptor. There is now a mechanism to write warnings and
errors to a file for inspection by the user.
* Removed deprecated libinput from the various subdirectory. It has been
replaced by libkui.
* Added 'set asr' or autosourcereload option to CGDB. It is off by default.
It is capable of reloading a source file when CGDB detects that a file has
been modified. To turn this feature on do ':set asr'.
* The :edit [:e] colon command has been implemented. It forces CGDB to
reload the current file in the source viewer.
* "progs" directory is no longer installed in a potentially
read-only directory. It is installed now in top_builddir, instead of
* Added libkui into CGDB. This is the fisrt of the 4 new libraries
designed to make CGDB flexible and modular. Because of this, the version
number has been bumped up to .5.0.
* Fixed crash in TGDB when buffering commands. If the user hit
'n' <Enter> <Enter> ... fast, while GDB was not responding, or working
on a command, the buffering code in TGDB would enter a bad command into
a queue, causing it to crash when it tries to execute the command.
* Fix crash in CGDB when parsing command line parameters. I think this crash
showed up when I starting compiling CGDB with 3.3 instead of 2.95. It would
crash when trying to pass the --pid argument to GDB through CGDB.
* CGDB now compiles again on AIX 4.3. Fixed Makefile.am in various/util/src
to not have a space between the -L and the path.
* Removed a memory leak from CGDB. When debugging applications that output
a lot of text, CGDB would reportedly grow well over 400MB. Thanks to the
sender of this patch, who decided to keep themselves anonymous.
* Removed all instances of PATH_MAX and replaced with FSUTIL_PATH_MAX.
PATH_MAX is not defined on HURD, and thus CGDB wouldn't compile in that
* Fixed TGDB bug. Tab completion was broken during cgdb-0.4.0 release.
* Added 'wrapscan' option (abbreviated 'ws'). Note that this means that
'ws' no longer means winsplit, since this isn't the standard vi meaning.
Fixed bug where 'n' jumps to the top of file when no search was previously
* Fixed bug in TGDB. It would not return TGDB_ABSOLUTE_SOURCE_DENIED if
TGDB called 'info source' and there was no line that returned the absolute
* Fixed bug in TGDB. TGDB would not query GDB for breakpoints on startup.
However, the user can set breakpoints in there .gdbinit. TGDB now gets all
breakpoints on startup. This fixes a bug in CGDB. The breakpoint will now
* Fixed CGDB bug. When searching for text, CGDB would search for the next
occurrence of the string from where it last found an occurrence, rather than
where the users cursor is.
* Fixed crash in TGDB. It would try to parse watchpoints.
It will no longer do this.
* Added new feature. CGDB added the 'set showtgdbcommands' option.
If this is set, CGDB will show all the commands that it is sending
to GDB to get work done. Otherwise, if its not set, CGDB will not show
the user the commands. The default value is off. Although, I currently
have mine set :). After all, you never can be to sure what this
program is doing ...
* Fixed bug in TGDB. TGDB used to return a newline for the front end to
print when a GUI command was issued. This made sure the output of the
command happened on a different line than the prompt. If the user ran
many commands in a row through CGDB, you would see an extra new line
appear. Now TGDB returns a new line when the command is actually given
to GDB, not when the command is issued.
* Fixed bug in TGDB. TGDB would not return the correct file:line if the
user ran a command file through gdb on init and the file instructed gdb
to set a breakpoint and run. CGDB would display line 1 of the correct
file instead of the correct line.
* Fixed bug in TGDB/CGDB. TGDB would return TGDB_UPDATE_SOURCE_FILES when
there was no source files in the list ( ex. if the inferior was compiled
without debug). This would cause CGDB to act buggy when the user tried to
open the filedlg on a program that was not compiled with debug. The first
time you would open the file dialog it would display a blank screen. The
second time it would give you an error but it would put you in the file
dialog mode, even though it displayed the CGDB source window. Both of these
bugs should be fixed.
* Fixed bug in TGDB/CGDB. It was not properly parsing the breakpoint information
out of GDB. When using C++, GDB would output data that TGDB did not expect.
TGDB can now parse the data properly. The result is that CGDB now displays
all of the breakpoints in the source window. It used to not display them all.
* Fixed bug in cgdb. If the user hit 'o' in cgdb, then got out of the
file dialog, the next time ^c was typed in the gdb window, the prompt
would not refresh itself properly.
* Fixed ada highlighting bug. String literals were not being highlighted.
* Temporarily fixed the ^c bug. The data at the console is now cleared when
the user hits ^c. A better fix will be arranged for when full signal handling
support is integrated.
* Fixed libinput bug. If the user held down '\n' for a long time, and then
hit any other key, an extra '\n' would come out and then the other key.
This was *very* annoying when holding down the '\n' key to continue nexting.
* Fixed highlighting bug. This ( '\"' ) would start a string literal
* Fixed string literal bug where files don't highlight properly in C/C++.
* Fixed bug in the file dialog window. It would not accept the enter
key, so the user could never select a file.
* Fixed tab bug, where tab spaces were being displayed incorrectly in
the source window. Now cgdb can handle tabs in a file properly.
* Added VI-style page up/page down commands. Deprecated old Shift-J
and Shift-K page up/page down style commands.
* Fixed bug in ada highlighter. The file would not be displayed correctly
when trying to highlight an ada source file.
* Fast tokenizer replaces older hand written one. CGDB now can syntax
highlight a 15000+ line ada or c file in fractions of a second compared
to the second it used to take. Believe me, 1 second to load a file
can get frustrating when you wait enough times. :)
* CGDB now reads $HOME/.cgdb/cgdbrc, this is useful for automating
any commands the user would normally type into the status bar.
This is a *great* first attempt at making cgdb configurable.
* There are *many* new options to type into the status bar,
they are all listed in the README file, or from :help, check it out.