Package ghidra.debug.spi.tracermi
Interface TraceRmiLaunchOpinion
- All Superinterfaces:
ExtensionPoint
A factory of launch offers
Each opinion is instantiated only once for the entire application, even when multiple tools are open.
-
Method Summary
Modifier and TypeMethodDescriptiongetOffers(ghidra.app.plugin.core.debug.gui.tracermi.launcher.TraceRmiLauncherServicePlugin plugin, Program program) Generate or retrieve a collection of offers based on the current program.default voidregisterOptions(Options options) Register any optionsdefault booleanrequiresRefresh(String optionName) Check if a change in the given option requires a refresh of offers
-
Method Details
-
registerOptions
Register any options- Parameters:
options- the tool options
-
requiresRefresh
Check if a change in the given option requires a refresh of offers- Parameters:
optionName- the name of the option that changed- Returns:
- true to refresh, false otherwise
-
getOffers
Collection<TraceRmiLaunchOffer> getOffers(ghidra.app.plugin.core.debug.gui.tracermi.launcher.TraceRmiLauncherServicePlugin plugin, Program program) Generate or retrieve a collection of offers based on the current program.Take care trying to "validate" a particular mechanism. For example, it is not appropriate to check that GDB exists, nor to execute it to derive its version.
- It's possible the user has dependencies installed in non-standard locations. I.e., the user needs a chance to configure things before the UI decides whether or not to display them.
- The menus are meant to display all possibilities installed in Ghidra, even if some dependencies are missing on the local system. Discovery of the feature is most important. Knowing a feature exists may motivate a user to obtain the required dependencies and try it out.
- An offer is only promoted to the quick-launch menu upon successful connection. I.e., the entries there are already validated; they've worked at least once before.
- Parameters:
plugin- the Trace RMI launcher service plugin. NOTE: to get access to the Trace RMI (connection) service, use theInternalTraceRmiService, so that the offers can register the connection's resources. SeeTraceRmiHandler.registerTerminals(Collection). Terminal registration is required for the Disconnect button to completely terminate the back end.program- the current program. While this is not always used by the launcher, it is implied that the user expects the debugger to do something with the current program, even if it's just informing the back-end debugger of the target image.- Returns:
- the offers. The order is ignored, since items are displayed alphabetically.
-