GP-2651: Update Debugger screenshots
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 50 KiB |
|
@ -37,6 +37,11 @@ public class GenericDebuggerProgramLaunchOffer extends AbstractDebuggerProgramLa
|
||||||
return program.getName();
|
return program.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getButtonTitle() {
|
||||||
|
return "Launch";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMenuTitle() {
|
public String getMenuTitle() {
|
||||||
return model.getBrief();
|
return model.getBrief();
|
||||||
|
|
|
@ -164,8 +164,8 @@ public class ObjectNode extends GTreeSlowLoadingNode { //extends GTreeNode
|
||||||
ObjectContainer rootContainer = provider.getRoot();
|
ObjectContainer rootContainer = provider.getRoot();
|
||||||
Map<String, Object> rootMap = rootContainer.getAttributeMap();
|
Map<String, Object> rootMap = rootContainer.getAttributeMap();
|
||||||
if (rootMap.containsKey(TargetEventScope.EVENT_OBJECT_ATTRIBUTE_NAME)) {
|
if (rootMap.containsKey(TargetEventScope.EVENT_OBJECT_ATTRIBUTE_NAME)) {
|
||||||
TargetThread targetProcess =
|
TargetObject targetProcess =
|
||||||
(TargetThread) rootMap.get(TargetEventScope.EVENT_OBJECT_ATTRIBUTE_NAME);
|
(TargetObject) rootMap.get(TargetEventScope.EVENT_OBJECT_ATTRIBUTE_NAME);
|
||||||
if (container.getTargetObject().equals(targetProcess)) {
|
if (container.getTargetObject().equals(targetProcess)) {
|
||||||
return ICON_EVENT;
|
return ICON_EVENT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -319,7 +319,12 @@ public class DebuggerWatchesProvider extends ComponentProviderAdapter
|
||||||
PcodeExecutor<WatchValue> asyncWatchExecutor; // name is reminder to use asynchronously
|
PcodeExecutor<WatchValue> asyncWatchExecutor; // name is reminder to use asynchronously
|
||||||
PcodeExecutor<byte[]> prevValueExecutor;
|
PcodeExecutor<byte[]> prevValueExecutor;
|
||||||
// TODO: We could do better, but the tests can't sync if we do multi-threaded evaluation
|
// TODO: We could do better, but the tests can't sync if we do multi-threaded evaluation
|
||||||
ExecutorService workQueue = Executors.newSingleThreadExecutor();
|
ExecutorService workQueue = Executors.newSingleThreadExecutor(new ThreadFactory() {
|
||||||
|
@Override
|
||||||
|
public Thread newThread(Runnable r) {
|
||||||
|
return new Thread(r, "Watch Evaluator");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@AutoServiceConsumed
|
@AutoServiceConsumed
|
||||||
private DebuggerListingService listingService; // For goto and selection
|
private DebuggerListingService listingService; // For goto and selection
|
||||||
|
|
|
@ -109,6 +109,9 @@ public class DefaultPcodeDebuggerMemoryAccess extends DefaultPcodeTraceMemoryAcc
|
||||||
// TODO: Expand to block? DON'T OVERWRITE KNOWN!
|
// TODO: Expand to block? DON'T OVERWRITE KNOWN!
|
||||||
DebuggerStaticMappingService mappingService =
|
DebuggerStaticMappingService mappingService =
|
||||||
tool.getService(DebuggerStaticMappingService.class);
|
tool.getService(DebuggerStaticMappingService.class);
|
||||||
|
if (mappingService == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
byte[] data = new byte[4096];
|
byte[] data = new byte[4096];
|
||||||
|
|
||||||
Trace trace = platform.getTrace();
|
Trace trace = platform.getTrace();
|
||||||
|
|
|
@ -51,10 +51,13 @@ public class DebuggerObjectsPluginScreenShots extends GhidraScreenShotGenerator
|
||||||
static class ActionyTestTargetObject
|
static class ActionyTestTargetObject
|
||||||
extends DefaultTestTargetObject<TestTargetObject, TestTargetObject>
|
extends DefaultTestTargetObject<TestTargetObject, TestTargetObject>
|
||||||
implements TargetInterpreter, TargetResumable, TargetSteppable, TargetLauncher,
|
implements TargetInterpreter, TargetResumable, TargetSteppable, TargetLauncher,
|
||||||
TargetAttacher, TargetAttachable {
|
TargetAttacher, TargetAttachable, TargetThread, TargetExecutionStateful {
|
||||||
|
|
||||||
public ActionyTestTargetObject(TestTargetObject parent, String name, String typeHint) {
|
public ActionyTestTargetObject(TestTargetObject parent, String name, String typeHint) {
|
||||||
super(parent, name, typeHint);
|
super(parent, name, typeHint);
|
||||||
|
setAttributes(Map.of(
|
||||||
|
TargetExecutionStateful.STATE_ATTRIBUTE_NAME, TargetExecutionState.STOPPED),
|
||||||
|
"Init");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,7 +97,7 @@ public class DebuggerObjectsPluginScreenShots extends GhidraScreenShotGenerator
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NOTE: The icon selection looks like it relies of "duck typing", which is probably not the
|
* NOTE: The icon selection looks like it relies on "duck typing", which is probably not the
|
||||||
* Right Way. I would have expected it to consume the type hint. Eh. Anyway, let's take a
|
* Right Way. I would have expected it to consume the type hint. Eh. Anyway, let's take a
|
||||||
* screenshot, shall we?
|
* screenshot, shall we?
|
||||||
*
|
*
|
||||||
|
@ -203,10 +206,10 @@ public class DebuggerObjectsPluginScreenShots extends GhidraScreenShotGenerator
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
mb.testModel.session.requestFocus(mb.testModel.session);
|
mb.testModel.session.requestFocus(mb.testModel.session);
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
mb.testModel.session.requestFocus(thread1a34);
|
|
||||||
waitForSwing();
|
|
||||||
teEnvBlock.changeAttributes(List.of("BOGUS FOCUS"), List.of(), Map.of(), "Clean");
|
teEnvBlock.changeAttributes(List.of("BOGUS FOCUS"), List.of(), Map.of(), "Clean");
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
|
mb.testModel.session.requestFocus(thread1a34);
|
||||||
|
waitForSwing();
|
||||||
|
|
||||||
captureIsolatedProvider(objectsProvider, 600, 600);
|
captureIsolatedProvider(objectsProvider, 600, 600);
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,8 +80,9 @@ public class DebuggerPcodeStepperPluginScreenShots extends GhidraScreenShotGener
|
||||||
traceManager.openTrace(tb.trace);
|
traceManager.openTrace(tb.trace);
|
||||||
traceManager.activateThread(thread);
|
traceManager.activateThread(thread);
|
||||||
traceManager.activateTime(TraceSchedule.parse("0:.t0-7"));
|
traceManager.activateTime(TraceSchedule.parse("0:.t0-7"));
|
||||||
|
waitForSwing();
|
||||||
|
|
||||||
pcodeProvider.mainPanel.setDividerLocation(0.4);
|
runSwing(() -> pcodeProvider.mainPanel.setDividerLocation(360));
|
||||||
captureIsolatedProvider(pcodeProvider, 900, 300);
|
captureIsolatedProvider(pcodeProvider, 900, 300);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,8 @@ public class DebuggerWatchesPluginScreenShots extends GhidraScreenShotGenerator
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
traceManager.activateSnap(snap1);
|
traceManager.activateSnap(snap1);
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
|
watchesProvider.waitEvaluate(1000);
|
||||||
|
waitForSwing();
|
||||||
|
|
||||||
captureIsolatedProvider(watchesProvider, 800, 400);
|
captureIsolatedProvider(watchesProvider, 800, 400);
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,7 +198,11 @@ public interface TargetMethod extends TargetObject {
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public static TargetParameterMap ofEntries(
|
public static TargetParameterMap ofEntries(
|
||||||
Entry<String, ParameterDescription<?>>... entries) {
|
Entry<String, ParameterDescription<?>>... entries) {
|
||||||
return new ImmutableTargetParameterMap(Map.ofEntries(entries));
|
Map<String, ParameterDescription<?>> ordered = new LinkedHashMap<>();
|
||||||
|
for (Entry<String, ParameterDescription<?>> ent: entries) {
|
||||||
|
ordered.put(ent.getKey(), ent.getValue());
|
||||||
|
}
|
||||||
|
return new ImmutableTargetParameterMap(ordered);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,22 +34,22 @@ public class TestMimickJavaLauncher
|
||||||
|
|
||||||
setAttributes(
|
setAttributes(
|
||||||
List.of(), Map.of(TargetMethod.PARAMETERS_ATTRIBUTE_NAME, TargetParameterMap.ofEntries(
|
List.of(), Map.of(TargetMethod.PARAMETERS_ATTRIBUTE_NAME, TargetParameterMap.ofEntries(
|
||||||
|
Map.entry("Home",
|
||||||
|
ParameterDescription.create(String.class, "Home", false,
|
||||||
|
"/opt/java-17-amazon-corretto", "Home", "")),
|
||||||
|
Map.entry("Launcher",
|
||||||
|
ParameterDescription.create(String.class, "Launcher", false, "java", "Launcher",
|
||||||
|
"")),
|
||||||
|
Map.entry("Main",
|
||||||
|
ParameterDescription.create(String.class, "Main", false, "hw.HelloWorld",
|
||||||
|
"Main", "")),
|
||||||
|
Map.entry("Options",
|
||||||
|
ParameterDescription.create(String.class, "Options", false, "", "Options", "")),
|
||||||
Map.entry("Suspend",
|
Map.entry("Suspend",
|
||||||
ParameterDescription.create(Boolean.class, "Suspend", false, true, "Suspend",
|
ParameterDescription.create(Boolean.class, "Suspend", false, true, "Suspend",
|
||||||
"")),
|
"")),
|
||||||
Map.entry("Quote",
|
Map.entry("Quote",
|
||||||
ParameterDescription.create(String.class, "Quote", false, "\"", "Quote", "")),
|
ParameterDescription.create(String.class, "Quote", false, "\"", "Quote", "")))),
|
||||||
Map.entry("Launcher",
|
|
||||||
ParameterDescription.create(String.class, "Launcher", false, "java", "Launcher",
|
|
||||||
"")),
|
|
||||||
Map.entry("Options",
|
|
||||||
ParameterDescription.create(String.class, "Options", false, "", "Options", "")),
|
|
||||||
Map.entry("Main",
|
|
||||||
ParameterDescription.create(String.class, "Main", false, "hw.HelloWorld",
|
|
||||||
"Main", "")),
|
|
||||||
Map.entry("Home",
|
|
||||||
ParameterDescription.create(String.class, "Home", false,
|
|
||||||
"/opt/java-11-amazon-corretto", "Home", "")))),
|
|
||||||
"Initialized");
|
"Initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|