mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
GP-3887: Update Debugger course for Trace RMI.
This commit is contained in:
parent
190f1eaa1e
commit
a93a695e6a
79 changed files with 2235 additions and 1663 deletions
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
package ghidra.app.plugin.core.debug.gui.tracermi.launcher;
|
||||
|
||||
import static ghidra.app.plugin.core.debug.gui.tracermi.launcher.TraceRmiLauncherServicePlugin.getProgramName;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
@ -52,7 +54,7 @@ public class LaunchAction extends MultiActionDockingAction {
|
|||
Program program = plugin.currentProgram;
|
||||
String title = program == null
|
||||
? "Configure and Launch ..."
|
||||
: "Configure and Launch %s using...".formatted(program.getName());
|
||||
: "Configure and Launch %s using...".formatted(getProgramName(program));
|
||||
return Stream.concat(Stream.of(title), menuPath.stream()).toArray(String[]::new);
|
||||
}
|
||||
|
||||
|
@ -77,12 +79,12 @@ public class LaunchAction extends MultiActionDockingAction {
|
|||
Long last = saved.get(offer.getConfigName());
|
||||
if (last == null) {
|
||||
// NB. If program == null, this will always happen.
|
||||
// Thus, no worries about program.getName() below.
|
||||
// Thus, no worries about getProgramName(program) below.
|
||||
continue;
|
||||
}
|
||||
String title = program == null
|
||||
? "Re-launch " + offer.getTitle()
|
||||
: "Re-launch %s using %s".formatted(program.getName(), offer.getTitle());
|
||||
: "Re-launch %s using %s".formatted(getProgramName(program), offer.getTitle());
|
||||
actions.add(new ActionBuilder(offer.getConfigName(), plugin.getName())
|
||||
.popupMenuPath(title)
|
||||
.popupMenuGroup("0", "%016x".formatted(Long.MAX_VALUE - last))
|
||||
|
@ -158,11 +160,11 @@ public class LaunchAction extends MultiActionDockingAction {
|
|||
return "Configure and launch";
|
||||
}
|
||||
if (offer == null) {
|
||||
return "Configure and launch " + program.getName();
|
||||
return "Configure and launch " + getProgramName(program);
|
||||
}
|
||||
if (program == null) {
|
||||
return "Re-launch " + offer.getTitle();
|
||||
}
|
||||
return "Re-launch %s using %s".formatted(program.getName(), offer.getTitle());
|
||||
return "Re-launch %s using %s".formatted(getProgramName(program), offer.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ import ghidra.debug.api.tracermi.TraceRmiLaunchOffer.LaunchConfigurator;
|
|||
import ghidra.debug.api.tracermi.TraceRmiLaunchOffer.PromptMode;
|
||||
import ghidra.debug.spi.tracermi.TraceRmiLaunchOpinion;
|
||||
import ghidra.formats.gfilesystem.FSRL;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.framework.options.*;
|
||||
import ghidra.framework.plugintool.*;
|
||||
import ghidra.framework.plugintool.util.PluginStatus;
|
||||
|
@ -236,10 +237,18 @@ public class TraceRmiLauncherServicePlugin extends Plugin
|
|||
executeTask(new ConfigureAndLaunchTask(offer));
|
||||
}
|
||||
|
||||
protected static String getProgramName(Program program) {
|
||||
DomainFile df = program.getDomainFile();
|
||||
if (df != null) {
|
||||
return df.getName();
|
||||
}
|
||||
return program.getName();
|
||||
}
|
||||
|
||||
protected String[] constructLaunchMenuPrefix() {
|
||||
return new String[] {
|
||||
DebuggerPluginPackage.NAME,
|
||||
"Configure and Launch " + currentProgram.getName() + " using..." };
|
||||
"Configure and Launch " + getProgramName(currentProgram) + " using..." };
|
||||
}
|
||||
|
||||
protected String[] prependConfigAndLaunch(List<String> menuPath) {
|
||||
|
|
|
@ -810,6 +810,11 @@ public class TraceRmiHandler implements TraceRmiConnection {
|
|||
}
|
||||
DebuggerCoordinates finalCoords = object == null ? coords : coords.object(object);
|
||||
Swing.runLater(() -> {
|
||||
DebuggerTraceManagerService traceManager = this.traceManager;
|
||||
if (traceManager == null) {
|
||||
// Can happen during tear down.
|
||||
return;
|
||||
}
|
||||
if (!traceManager.getOpenTraces().contains(open.trace)) {
|
||||
traceManager.openTrace(open.trace);
|
||||
traceManager.activate(finalCoords, ActivationCause.SYNC_MODEL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue