About
=====
Nemiver is a project to write a standalone graphical debugger that integrates
well in the GNOME desktop environment.
It currently features a backend which uses the well known GNU Debugger gdb.

General
=======
- In addition to the toolbar buttons, you can toggle breakpoints simply by
  clicking in the margin on the line you want to break on.
- Hovering over a variable name for longer than 1 second should show its value
  as a tooltip window if the variable is in scope
- attaching to a running process is as simple as typing
    "nemiver --attach <the-name-of-your-program>"
  You are not obliged to know the PID of the process beforehand.

Sessions
========
Nemiver uses a sqlite database to store basic information about a debugging
session so you can resume where you left off last time.  Whenever you start
debugging, a new session is created for you automatically (unless you explicitly
request to resume an existing session).  On exit, your session will
automatically be saved.  Information saved with your session includes
breakpoints, program arguments, working directory path, environment variables,
etc.  Additionally, you can save the current session to the database on demand by
selecting File > Save Session to Disk.
To resume a previously saved debugging session, you can either specify the
session ID to the --executesession command line option or select File > Saved
Sessions... > [select session] from the User interface.
To resume the last saved debugging session you can just type "nemiver --last".

Source Directories
==================
Some versions of the GDB debugger don't provide full pathname information for
breakpoints, etc.  In this case, you may need to specify which directories to
search for source files.  These can be specified by manually adding source
directories in the Preferences dialog. In the future there will be a more
explicit prompt asking the user to locate the requested file when nemiver can't
determine the absolute path of a file on its own.

Extending Nemiver
=================
Nemiver is a bit more than just a simple GUI debugger.  It is actually a
platform which can be extended with plugins and dynamically loaded modules.
The libnemivercommon library provides the basic functionality for loading
dynamic modules and enabling the plugin architecture of Nemiver.  You can create
additional plugins for nemiver, and you can even create entirely new
perspectives for the nemiver workbench.  Currently, only the debugging
perspective is provided, but others could be added in the future (e.g. a
perspective for profiling tools such as oprofile, valgrind / massif, etc).
Nemiver also provides an event-based debugger library (which currently features
a gdb backend, but others could be added in the future) that could be re-used by
other projects seeking to implement a debugger as a part of an IDE, for example.

Automated Tests
===============
Nemiver includes several automated unit tests which can be run with `make
check`.  Because nemiver uses dynamically-loaded modules, however, these tests
must be run after installing nemiver, otherwise they will not work.

Reporting Bugs
==============
If you've found a bug with Nemiver, we'd like to know about it.  Bugs are
tracked in the GNOME Bugzilla bug tracker: http://bugzilla.gnome.org/
