mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-3162: refresh bool->enum
This commit is contained in:
parent
a9baf9f6d8
commit
15c4345d71
116 changed files with 376 additions and 266 deletions
|
@ -21,12 +21,13 @@ import java.util.stream.Collectors;
|
|||
|
||||
import com.sun.jdi.Location;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.JdiCause;
|
||||
import ghidra.dbg.jdi.manager.JdiEventsListenerAdapter;
|
||||
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.TargetBreakpointSpecContainer;
|
||||
import ghidra.dbg.target.TargetBreakpointSpec.TargetBreakpointKind;
|
||||
import ghidra.dbg.target.TargetBreakpointSpecContainer;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.program.model.address.AddressRange;
|
||||
import ghidra.util.datastruct.WeakValueHashMap;
|
||||
|
@ -142,7 +143,7 @@ public class JdiModelTargetBreakpointContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
return CompletableFuture.completedFuture(null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package ghidra.dbg.jdi.model;
|
|||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
||||
import ghidra.dbg.jdi.model.iface1.JdiModelTargetDeletable;
|
||||
import ghidra.dbg.target.TargetBreakpointLocation;
|
||||
|
@ -104,7 +105,7 @@ public class JdiModelTargetBreakpointSpec extends JdiModelTargetObjectImpl
|
|||
actions.remove(action);
|
||||
}
|
||||
|
||||
protected CompletableFuture<JdiBreakpointInfo> getInfo(boolean refresh) {
|
||||
protected CompletableFuture<JdiBreakpointInfo> getInfo(RefreshBehavior refresh) {
|
||||
return CompletableFuture.completedFuture(info);
|
||||
}
|
||||
|
||||
|
@ -126,7 +127,7 @@ public class JdiModelTargetBreakpointSpec extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
return getInfo(refresh).thenCompose(i -> {
|
||||
return updateInfo(info, i, "Refreshed");
|
||||
});
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ReferenceType;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
||||
|
@ -45,7 +46,7 @@ public class JdiModelTargetClassContainer extends JdiModelTargetObjectImpl {
|
|||
super(vm, "Classes");
|
||||
this.vm = vm;
|
||||
|
||||
requestElements(true);
|
||||
requestElements(RefreshBehavior.REFRESH_ALWAYS);
|
||||
}
|
||||
|
||||
protected CompletableFuture<Void> updateUsingClasses(Map<String, ReferenceType> byName) {
|
||||
|
@ -64,7 +65,7 @@ public class JdiModelTargetClassContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
// Ignore 'refresh' because inferior.getKnownModules may exclude executable
|
||||
return doRefresh();
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.sun.jdi.VirtualMachineManager;
|
|||
import com.sun.jdi.connect.Connector;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
||||
|
@ -64,7 +65,7 @@ public class JdiModelTargetConnectorContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
// Ignore 'refresh' because inferior.getKnownModules may exclude executable
|
||||
return doRefresh();
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetMemoryRegion;
|
||||
import ghidra.dbg.target.TargetSection;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -59,7 +60,7 @@ public class JdiModelTargetConstantPool extends JdiModelTargetObjectImpl impleme
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.range = impl.getAddressRange(getClassType(), pool.length);
|
||||
if (range != null) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.sun.jdi.ClassNotLoadedException;
|
|||
import com.sun.jdi.Field;
|
||||
import com.sun.jdi.request.*;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -78,7 +79,7 @@ public class JdiModelTargetField extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
this.declaringType = (JdiModelTargetReferenceType) getInstance(field.declaringType());
|
||||
|
||||
populateAttributes();
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.Field;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
||||
|
@ -66,7 +67,7 @@ public class JdiModelTargetFieldContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, Field> map = new HashMap<>();
|
||||
List<Field> fields = useAll ? reftype.reftype.allFields() : reftype.reftype.fields();
|
||||
for (Field f : fields) {
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
import com.sun.jdi.ClassNotLoadedException;
|
||||
import com.sun.jdi.LocalVariable;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
@TargetObjectSchemaInfo(
|
||||
|
@ -63,7 +64,7 @@ public class JdiModelTargetLocalVariable extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
populateAttributes();
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.LocalVariable;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
|
@ -63,7 +64,7 @@ public class JdiModelTargetLocalVariableContainer extends JdiModelTargetObjectIm
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, LocalVariable> map = new HashMap<>();
|
||||
try {
|
||||
for (LocalVariable var : vars) {
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.sun.jdi.Location;
|
|||
import com.sun.jdi.request.BreakpointRequest;
|
||||
import com.sun.jdi.request.EventRequestManager;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -72,7 +73,7 @@ public class JdiModelTargetLocation extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.declaringType = (JdiModelTargetReferenceType) getInstance(location.declaringType());
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.Location;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
|
@ -63,7 +64,7 @@ public class JdiModelTargetLocationContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, Location> map = new HashMap<>();
|
||||
if (locations != null) {
|
||||
for (Location loc : locations) {
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
|
@ -84,7 +85,7 @@ public class JdiModelTargetMethod extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
populateAttributes();
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.Method;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
||||
|
@ -64,7 +65,7 @@ public class JdiModelTargetMethodContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, Method> map = new HashMap<>();
|
||||
List<Method> methods = useAll ? reftype.reftype.allMethods() : reftype.reftype.methods();
|
||||
for (Method var : methods) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ModuleReference;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.error.DebuggerUserException;
|
||||
import ghidra.dbg.target.TargetModule;
|
||||
import ghidra.dbg.target.TargetModuleContainer;
|
||||
|
@ -100,7 +101,7 @@ public class JdiModelTargetModuleContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
return doRefresh();
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
import com.sun.jdi.Mirror;
|
||||
import com.sun.jdi.ThreadReference;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.agent.DefaultTargetObject;
|
||||
import ghidra.dbg.jdi.manager.JdiCause;
|
||||
import ghidra.dbg.jdi.manager.JdiStateListener;
|
||||
|
@ -158,8 +159,8 @@ public class JdiModelTargetObjectImpl extends
|
|||
Map<String, ?> existingAttributes = getCachedAttributes();
|
||||
Boolean autoupdate = (Boolean) existingAttributes.get("autoupdate");
|
||||
if (autoupdate != null && autoupdate) {
|
||||
requestAttributes(true);
|
||||
requestElements(true);
|
||||
requestAttributes(RefreshBehavior.REFRESH_ALWAYS);
|
||||
requestElements(RefreshBehavior.REFRESH_ALWAYS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
||||
|
@ -60,7 +61,7 @@ public class JdiModelTargetObjectReference extends JdiModelTargetValue {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.referenceType = (JdiModelTargetReferenceType) getInstance(objref.referenceType());
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ObjectReference;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
@ -66,7 +67,7 @@ public class JdiModelTargetObjectReferenceContainer extends JdiModelTargetObject
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, ObjectReference> map = new HashMap<>();
|
||||
for (ObjectReference ref : refs) {
|
||||
map.put(ref.toString(), ref);
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.TargetModule;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -113,7 +114,7 @@ public class JdiModelTargetReferenceType extends JdiModelTargetType implements T
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.allFields = new JdiModelTargetFieldContainer(this, true);
|
||||
this.allMethods = new JdiModelTargetMethodContainer(this, true);
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.Location;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.TargetRegister;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -55,7 +56,7 @@ public class JdiModelTargetRegister extends JdiModelTargetObjectImpl implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
changeAttributes(List.of(), List.of(), Map.of( //
|
||||
DISPLAY_ATTRIBUTE_NAME, getDisplay() //
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.Location;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetRegisterBank;
|
||||
import ghidra.dbg.target.TargetRegisterContainer;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -136,7 +137,7 @@ public class JdiModelTargetRegisterContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
protected CompletableFuture<?> update() {
|
||||
return fetchElements(true).exceptionally(e -> {
|
||||
return fetchElements(RefreshBehavior.REFRESH_ALWAYS).exceptionally(e -> {
|
||||
Msg.error(this, "Could not update registers " + this + " on STOPPED");
|
||||
return null;
|
||||
});
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.Method;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetMemoryRegion;
|
||||
import ghidra.dbg.target.TargetSection;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -70,7 +71,7 @@ public class JdiModelTargetSection extends JdiModelTargetObjectImpl implements /
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.range = method == null ? impl.defaultRange : impl.getAddressRange(method);
|
||||
if (range != null) {
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
import com.sun.jdi.Method;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetMemory;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.program.model.address.Address;
|
||||
|
@ -56,7 +57,7 @@ public class JdiModelTargetSectionContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
constantPool = new JdiModelTargetConstantPool(this, reftype.reftype.constantPool(), false);
|
||||
changeAttributes(List.of(), List.of( //
|
||||
|
@ -67,7 +68,7 @@ public class JdiModelTargetSectionContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
updateUsingSections(reftype.reftype.methods());
|
||||
return CompletableFuture.completedFuture(null);
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetStack;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.util.Msg;
|
||||
|
@ -49,7 +50,7 @@ public class JdiModelTargetStack extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
List<JdiModelTargetStackFrame> targetFrames = new ArrayList<>();
|
||||
List<StackFrame> frames;
|
||||
try {
|
||||
|
@ -103,7 +104,7 @@ public class JdiModelTargetStack extends JdiModelTargetObjectImpl
|
|||
* @return null
|
||||
*/
|
||||
protected CompletableFuture<?> update() {
|
||||
return fetchElements(true).exceptionally(e -> {
|
||||
return fetchElements(RefreshBehavior.REFRESH_ALWAYS).exceptionally(e -> {
|
||||
Msg.error(this, "Could not update stack " + this + " on STOPPED");
|
||||
return null;
|
||||
});
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
|
||||
import com.sun.jdi.*;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.JdiCause;
|
||||
import ghidra.dbg.jdi.manager.JdiEventsListenerAdapter;
|
||||
import ghidra.dbg.jdi.model.iface1.JdiModelSelectableObject;
|
||||
|
@ -75,7 +76,7 @@ public class JdiModelTargetStackFrame extends JdiModelTargetObjectImpl implement
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
//this.arguments = new JdiModelTargetValueContainer(this, "Arguments", frame.getArgumentValues());
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.sun.jdi.request.EventRequestManager;
|
|||
import com.sun.jdi.request.StepRequest;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.*;
|
||||
import ghidra.dbg.jdi.model.iface1.*;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
|
@ -124,7 +125,7 @@ public class JdiModelTargetThread extends JdiModelTargetObjectReference implemen
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
populateAttributes();
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.ThreadReference;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.*;
|
||||
import ghidra.dbg.jdi.model.iface1.JdiModelTargetEventScope;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
|
@ -118,7 +119,7 @@ public class JdiModelTargetThreadContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
return updateUsingThreads(threads);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
|
||||
import com.sun.jdi.ThreadGroupReference;
|
||||
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.JdiEventsListenerAdapter;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
|
@ -61,7 +62,7 @@ public class JdiModelTargetThreadGroupContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
protected CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
List<ThreadGroupReference> groups;
|
||||
if (parent instanceof JdiModelTargetVM) {
|
||||
JdiModelTargetVM vm = (JdiModelTargetVM) parent;
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.Type;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
@ -64,7 +65,7 @@ public class JdiModelTargetTypeContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, Type> map = new HashMap<>();
|
||||
try {
|
||||
for (Type type : types) {
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.sun.jdi.event.*;
|
|||
import com.sun.jdi.request.*;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.*;
|
||||
import ghidra.dbg.jdi.manager.impl.JdiManagerImpl;
|
||||
import ghidra.dbg.jdi.model.iface1.*;
|
||||
|
@ -191,7 +192,7 @@ public class JdiModelTargetVM extends JdiModelTargetObjectImpl implements //
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
|
||||
this.threadGroups = new JdiModelTargetThreadGroupContainer(this);
|
||||
this.modules = new JdiModelTargetModuleContainer(this);
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.sun.jdi.VirtualMachine;
|
|||
import com.sun.jdi.event.*;
|
||||
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.manager.JdiCause;
|
||||
import ghidra.dbg.jdi.manager.JdiEventsListenerAdapter;
|
||||
import ghidra.dbg.target.TargetEventScope.TargetEventType;
|
||||
|
@ -151,8 +152,8 @@ public class JdiModelTargetVMContainer extends JdiModelTargetObjectImpl
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
if (!refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
if (!refresh.equals(RefreshBehavior.REFRESH_ALWAYS)) {
|
||||
updateUsingVMs(impl.getManager().getKnownVMs());
|
||||
return AsyncUtils.NIL;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
|||
import com.sun.jdi.Value;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
@ -64,7 +65,7 @@ public class JdiModelTargetValueContainer extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
Map<String, Value> map = new HashMap<>();
|
||||
try {
|
||||
for (Value val : values) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.sun.jdi.LocalVariable;
|
|||
import com.sun.jdi.Value;
|
||||
|
||||
import ghidra.async.AsyncFence;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.jdi.model.iface2.JdiModelTargetObject;
|
||||
import ghidra.dbg.target.schema.*;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.ResyncMode;
|
||||
|
@ -69,7 +70,7 @@ public class JdiModelTargetValueMap extends JdiModelTargetObjectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
return updateUsingValues(values);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue