
EDB uses QtPlugin system for plugins, this means that all plugins must be built 
using this system. All includes relating to plugins and data they can access
can be found in the main include directory, you should add this to the include
path of the .pro file you use to compile your plugins. The simplest way to do 
this is to put your plugin code in the same directory structure as EDB and
have your .pro file include plugins.pri

Several classes are provided as utility classes. For example, ByteShiftArray
provides a "shift register" of bytesa, which is good for finding a pattern of 
a specific length in a stream. BinaryString is provided as a reusable widget
which will display 3 text fields (ascii/utf-16/hex) and update all 3 as 
the user types which appropriate values (similar to the binary string input 
system of OllyDbg).

Currently, there are two main types of plugins, "DebuggerPlugin" which is a 
general purpose plugin and "DebuggerCore" which is uses to implement the core 
debugging functionality. Most likley you will want to create a "DebuggerPlugin".

To create a "DebuggerPlugin" plugin, you must inherit from 
DebuggerPluginInterface found in include/DebuggerPluginInterface.h. It requires 
that you implement the following virtual function(s):

virtual QMenu *menu(QWidget *parent = 0) = 0;

This will return a menu object which will be added to the "plugins" in EDB. 
When this menu item is activated, you may do whatever you wish.

Basic operations for implementing the plugin functionality can be found in 
include/Debugger.h which defines the "Debugger" namespace.
