mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-0: Fixing DebuggerTraceManagerService tests
This commit is contained in:
@@ -236,8 +236,8 @@ public class DefaultTraceRecorder implements TraceRecorder {
|
||||
|
||||
@Override
|
||||
public TraceStackFrame getTraceStackFrame(TargetStackFrame frame) {
|
||||
// THIS IS UNUSED
|
||||
return null;
|
||||
// Not the most efficient, but only used in testing.
|
||||
return getTraceStackFrameForSuccessor(frame);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -984,10 +984,10 @@ public class DebuggerTraceManagerServicePlugin extends Plugin
|
||||
return thread;
|
||||
}
|
||||
}
|
||||
if (!Objects.equals(prev.getTrace(), resolved.getTrace())) {
|
||||
return recorder.getTarget();
|
||||
}
|
||||
return null;
|
||||
//if (!Objects.equals(prev.getTrace(), resolved.getTrace())) {
|
||||
return recorder.getTarget();
|
||||
//}
|
||||
//return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,6 +33,7 @@ import ghidra.dbg.model.TestTargetStackFrameHasRegisterBank;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.trace.database.thread.DBTraceThread;
|
||||
import ghidra.trace.model.Trace;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.SystemUtilities;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
@@ -307,30 +308,30 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge
|
||||
traceManager.activateTrace(trace);
|
||||
waitForSwing();
|
||||
|
||||
assertEquals(0, recorder.getSnap());
|
||||
assertEquals(0, traceManager.getCurrentSnap());
|
||||
long initSnap = recorder.getSnap();
|
||||
assertEquals(initSnap, traceManager.getCurrentSnap());
|
||||
|
||||
recorder.forceSnapshot();
|
||||
waitForSwing();
|
||||
|
||||
assertEquals(1, recorder.getSnap());
|
||||
assertEquals(1, traceManager.getCurrentSnap());
|
||||
assertEquals(initSnap + 1, recorder.getSnap());
|
||||
assertEquals(initSnap + 1, traceManager.getCurrentSnap());
|
||||
|
||||
traceManager.setAutoActivatePresent(false);
|
||||
|
||||
recorder.forceSnapshot();
|
||||
waitForSwing();
|
||||
|
||||
assertEquals(2, recorder.getSnap());
|
||||
assertEquals(1, traceManager.getCurrentSnap());
|
||||
assertEquals(initSnap + 2, recorder.getSnap());
|
||||
assertEquals(initSnap + 1, traceManager.getCurrentSnap());
|
||||
|
||||
traceManager.setAutoActivatePresent(true);
|
||||
|
||||
recorder.forceSnapshot();
|
||||
waitForSwing();
|
||||
|
||||
assertEquals(3, recorder.getSnap());
|
||||
assertEquals(3, traceManager.getCurrentSnap());
|
||||
assertEquals(initSnap + 3, recorder.getSnap());
|
||||
assertEquals(initSnap + 3, traceManager.getCurrentSnap());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -344,6 +345,8 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge
|
||||
new TestDebuggerTargetTraceMapper(mb.testProcess1));
|
||||
Trace trace = recorder.getTrace();
|
||||
|
||||
waitForValue(() -> modelService.getTarget(trace));
|
||||
|
||||
traceManager.openTrace(trace);
|
||||
waitForSwing();
|
||||
|
||||
@@ -356,16 +359,22 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge
|
||||
assertNull(traceManager.getCurrentThread());
|
||||
assertEquals(mb.testProcess1, mb.testModel.session.getFocus());
|
||||
|
||||
traceManager.activateThread(recorder.getTraceThread(mb.testThread1));
|
||||
TraceThread thread = waitForValue(() -> recorder.getTraceThread(mb.testThread1));
|
||||
traceManager.activateThread(thread);
|
||||
waitForSwing();
|
||||
|
||||
assertEquals(mb.testThread1, mb.testModel.session.getFocus());
|
||||
|
||||
TestTargetStack stack = mb.testThread1.addStack();
|
||||
// Note, push simply moves the data, the new frame still has the higher index
|
||||
TestTargetStackFrameHasRegisterBank frame0 = stack.pushFrameHasBank();
|
||||
TestTargetStackFrameHasRegisterBank frame1 = stack.pushFrameHasBank();
|
||||
TestTargetStackFrameHasRegisterBank frame0 = stack.pushFrameHasBank(mb.addr(0x00400000));
|
||||
TestTargetStackFrameHasRegisterBank frame1 = stack.pushFrameHasBank(mb.addr(0x00400100));
|
||||
waitForDomainObject(trace);
|
||||
// Eww. I'm starting to think this could be cheating, considering focus sync at launch
|
||||
waitForValue(() -> recorder.getTraceStackFrame(frame0));
|
||||
waitForValue(() -> recorder.getTraceStackFrame(frame1));
|
||||
waitForValue(() -> recorder.getTargetStackFrame(thread, 0));
|
||||
waitForValue(() -> recorder.getTargetStackFrame(thread, 1));
|
||||
|
||||
// Starting with 0 results in no change in coordinates, so ignored
|
||||
traceManager.activateFrame(1);
|
||||
@@ -418,8 +427,8 @@ public class DebuggerTraceManagerServiceTest extends AbstractGhidraHeadedDebugge
|
||||
|
||||
TestTargetStack stack = mb.testThread1.addStack();
|
||||
// Note, push simply moves the data, the new frame still has the higher index
|
||||
TestTargetStackFrameHasRegisterBank frame0 = stack.pushFrameHasBank();
|
||||
TestTargetStackFrameHasRegisterBank frame1 = stack.pushFrameHasBank();
|
||||
TestTargetStackFrameHasRegisterBank frame0 = stack.pushFrameHasBank(mb.addr(0x00400000));
|
||||
TestTargetStackFrameHasRegisterBank frame1 = stack.pushFrameHasBank(mb.addr(0x00400100));
|
||||
waitForDomainObject(trace);
|
||||
|
||||
// Starting with 0 results in no change in coordinates, so ignored
|
||||
|
||||
Reference in New Issue
Block a user