Hi Ed,
I changed the following timeout value to something high (like 10000).
gate.await(2000L, TimeUnit.MILLISECONDS);
I used Java Bytecode Editor to do that.
This is some of the decompiled source code (maybe handy for the IDE team?);
private MemoryByte[] readBytes(long address, long length)
{
DsfServicesTracker tracker = new DsfServicesTracker(DsfUIPlugin.getBundleContext(), getContext().getSessionId());
IStack stack = (IStack)tracker.getService(IStack.class);
MIDataReadMemoryBytes mi = new MIDataReadMemoryBytes(getContext(), "0x" + Long.toString(address, 16), 0L, (int)length);
final CountDownLatch gate = new CountDownLatch(1);
final List<MemoryByte[]> list = Collections.synchronizedList(new ArrayList());
DataRequestMonitor<MIDataReadMemoryBytesInfo> rm = new DataRequestMonitor(stack.getExecutor(), null)
{
public void handleSuccess() {
list.add(((MIDataReadMemoryBytesInfo)getData()).getMIMemoryBlock());
gate.countDown();
}
};
ICommandControl cc = (ICommandControl)tracker.getService(ICommandControl.class);
cc.queueCommand(mi, rm);
try
{
gate.await(2000L, TimeUnit.MILLISECONDS);
}
catch (InterruptedException localInterruptedException) {}
if (list.isEmpty()) {
Logger.error(Texts.get("Error.ReadBytesTimout"));
return null;
}
return (MemoryByte[])list.get(0);
}