GDB front ends and other tools

1. GDB Front Ends

Here's a partial list of front ends using GDB. If you know of others, please add a link.

1.1. Using modern GDB/MI

GDB/MI is a line based machine oriented text interface to GDB. It is specifically intended to support the development of systems which use the debugger as component of a larger system. See The GDB/MI Interface in the GDB manual.

1.2. Using the old (deprecated) annotations mechanism (please fix them!)

1.3. Built-in/linked-with GDB

2. Other tools that extend GDB

3. Libraries

Here's a partial list of libraries that interface with GDB. If you know of others, please add a link.

3.1. Thin GDB/MI wrappers

These are reusable libraries that provide a programmatic GDB/MI interface, so you can create a GDB frontend without writing an MI parser, etc. You can also look at the source code for the frontends above, and consider reusing their MI bits.

gdbwire - C library.

libmigdb - C library.

3.2. GDB's own libgdb.a

This is just the whole of GDB built as a library. This is how FreePascal's Lazarus wraps GDB.

Note libgdb.a is not built by default, you need to run "make libgdb.a".

Caution: this is not a recommended approach. Paraphrasing Stan, the fact of the situation is that a C API makes things harder, not easier for a frontend. Consider that GDB is a) making system calls, which are sometimes blocking, b) is doing tricks with signals all over the place, and c) gets involved with permissions, and d) manages vast quantities of memory. It's just not something you ever want in your address space, like having a drunken malpracticing doctor wandering around your hotel with a master key and a bagful of scary medical instruments. Out of process / MI is really the safe way to go.

None: GDB Front Ends (last edited 2014-10-17 09:42:48 by PedroAlves)

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.