The NetBeans Debugger SPI definition defines interface to Debugger Plug-ins. It allows to extend some already existing debugger, or create a new implementation of debugger.

Debugger SPI allows to:

Registration

Debugger Core SPI contains service providers extending basic Debugger Core API model. Each service provider must be registerred in Meta-inf/debugger. Meta-inf/debugger is special folder in module *.jar file.

If you would like to register some implementation(s) of some service to some Debugger Core API interface of type {type name}, you should create file with name {service full class name}in folder Meta-inf/debugger/{type name}.
The file should contain a list of fully-qualified class names, one per line, of classes implementing the service interface. Space and tab characters surrounding each name, as well as blank lines, are ignored. The comment character is '#' (\u0023); on each line all characters following the first comment character are ignored. The file must be encoded in UTF-8.

Example:
I would like to register org.netbeans.modules.debugger.jpda.actions.StepAction and org.netbeans.modules.debugger.jpda.actions.StartAction service implementations for JPDA DebuggerEngine. In this case I should cerate file named org.netbeans.spi.debugger.ActionsProvider in folder Meta-inf/debugger/netbeans-JPDADebuggerEngine/. "netbeans-JPDADebuggerEngine" is a name of JPDA DebuggerEngine, and it can be obtained from DebuggerEngine.getTypeID(). This file should contain two lines:
org.netbeans.modules.debugger.jpda.actions.StepAction<EOL>
org.netbeans.modules.debugger.jpda.actions.StartAction <EOL>


List of all default service providers:

Service provider interface
Should be registerred to:
File names:
{@link org.netbeans.spi.debugger.SessionProvider}
{@link org.netbeans.api.debugger.DebuggerInfo} folder name: Meta-inf/debugger/{DebuggerInfo type name}
file name: org.netbeans.spi.debugger.SessionProvider
{@link org.netbeans.spi.debugger.DelegatingSessionProvider}  {@link org.netbeans.api.debugger.DebuggerInfo} folder name: Meta-inf/debugger/{DebuggerInfo type name}
file name: org.netbeans.spi.debugger.DelegatingSessionProvider
{@link org.netbeans.spi.debugger.DebuggerEngineProvider} {@link org.netbeans.api.debugger.Session}  folder name: Meta-inf/debugger/{Session type name}
file name: org.netbeans.spi.debugger.DebuggerEngineProvider
{@link org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider} {@link org.netbeans.api.debugger.Session} folder name: Meta-inf/debugger/{Session type name}
file name: org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider
{@link org.netbeans.spi.debugger.WatchesProvider}  {@link org.netbeans.api.debugger.DebuggerEngine}  folder name: Meta-inf/debugger/{DebuggerEngine type name}
file name: org.netbeans.spi.debugger.WatchesProvider

{@link org.netbeans.spi.debugger.ActionsProvider}
{@link org.netbeans.api.debugger.DebuggerEngine}
folder name: Meta-inf/debugger/{DebuggerEngine type name}
file name: org.netbeans.spi.debugger.ActionsProvider