Nemiver is an project to write a standalone graphical debugger that integrates
well in the GNOME desktop environment. The project 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
Sessions
Nemiver uses an 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.
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.
Product's homepage
What's New in This Release: [ read full changelog ]
· Andrej ŽnidarÅ¡iÄ
· Updated Slovenian translation
· Daniel Mustieles
· Updated Spanish translation
· Dodji Seketeli
· Ignore 'current-thread-id' in thread list
· Fix a crash in previous commit
· Fix configury when gsettings is not present
· Update the INSTALL file.
· Update HACKING documentation
· Style cleanup
· Emit one IDebugger::breakpoint_set_signal per BP
· Introduce Loc (code location) type
· Fix memory corruption in SourceEditor
· Avoid reading freed memory
· Fix a crash in confmgr
· Fixlets in setbreakpointdialog.ui
· Fix gsettings configure test error
· Use Automake GSettings magic to support DESTDIR
· Fix configuration keys' description wording
· Add a description to Nemiver's doap file
· Update Makefile.am's release text.
· Fix update-changelog for building out of srcdir
· Properly mark the GDB line as busy
· Add some logging to nmv-gdb-engine.cc
· Avoid gratuitously resetting the dbg command queue
· Handle breakpoints added via GDB scripts
· Reference the local var inspector view
· Restore layout for variable inspector widget
· Fix VarsTreeView memory management
· 657021 Wrong behaviour enlarging var inspector
· Backend support for GDB/MI variable format
· Enable GDB pretty printers by default
· Fix tests that got broken a while ago
· Initialize IDebugger dynmods with gconf in tests
· Add preferences for GDB pretty printing
· Support pretty printing instantly applied
· Avoid emitting useless -enable-pretty-printing
· Avoid over reacting to pretty printing key changes
· 657834 Properly un-escape '\"' sequence
· 658097 Fix hovering over pointer dereference expression
· Add comment to is_word_delimiter
· Fix a typo in the coding style
· 644823 Cannot set BP in files with space in path
· Fix tests/pointer-deref.c regression
· 658143 Fails to support multiple breakpoints
· Use DBGPerspective::append_breakpoints
· Don't forget to Gtk::Widget::show_all source views
· constify IDebugger::Breakpoint::is_pending
· 632305 Avoid disassembling location of pending breakpoint
· Don't append the disassembly editor multiple times
· Misbehaving vertically enlarging var inspector
· Fabien Parent
· Add a GSettings implementation for IConfMgr
· Remove not implemented constructor
· Uniformize the header guard name.
· Fix typo
· Apply the GNOME 3 style on the toolbar
· Expand session's treeview
· Replace NULL symbol with 0
· Support user defined assembly syntax
· Add GUI to change the assembly syntax
· Remove unused status widgets
· New Layout Manager and 3 additionals new layouts
· 577496 561100 533437 656093 564992 Support Copy/Paste/Reset on target terminal
· Use ATT for disassembly flavor to avoid a glade bug
· Fran Dieguez
· Updated Galician translations
· Kalev Lember
· Fix header guard name in nmv-hex-document.h
· Fixed includes to match GTK+'s single include policy
· Avoid using gtkmm deprecated API
· Dropped ifdefs for gtkmm 2.16
· Use GDK_KEY_* enums, not the deprecated GDK_* ones
· Dropped ifdefs for GTK+ 2.10
· Removed gnome-vfs compat code
· Dropped compat code with gtksourceviewmm < 2.10
· Removed an unused forward declaration
· Removed has-separator property
· Popup var inspector size requisition code rework
· Port to gtkmm 3.0 and gtksourceviewmm 3.0
· Fix build with ghex 2.90.0
· Lele Long
· Update Simplified Chinese translaton
· Marek ÄŒernocký
· Updated Czech translation
· Mario Blättermann
· [l10n] Updated German translation
· Piotr DrÄ…g
· Updated POTFILES.in
· Takeshi AIHANA
· Updated Japanese translation.
· Yuri Kozlov
· Updated Russian translation