diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java index fb71267384..0224f2de34 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java @@ -39,6 +39,7 @@ import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.schedule.TraceSchedule; +import ghidra.trace.model.time.schedule.TraceSchedule.TimeRadix; import ghidra.util.Msg; import ghidra.util.NotOwnerException; @@ -712,7 +713,7 @@ public class DebuggerCoordinates { coordState.putLong(KEY_THREAD_KEY, thread.getKey()); } if (time != null) { - coordState.putString(KEY_TIME, time.toString()); + coordState.putString(KEY_TIME, time.toString(TimeRadix.DEC)); } if (frame != null) { coordState.putInt(KEY_FRAME, frame); @@ -785,7 +786,7 @@ public class DebuggerCoordinates { String timeSpec = coordState.getString(KEY_TIME, null); TraceSchedule time; try { - time = TraceSchedule.parse(timeSpec); + time = TraceSchedule.parse(timeSpec, TimeRadix.DEC); } catch (Exception e) { Msg.error(DebuggerCoordinates.class, diff --git a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiHandler.java b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiHandler.java index 3b91dc265f..6783a81851 100644 --- a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiHandler.java +++ b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiHandler.java @@ -63,6 +63,7 @@ import ghidra.trace.model.target.schema.TraceObjectSchema.SchemaName; import ghidra.trace.model.target.schema.XmlSchemaContext; import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.schedule.TraceSchedule; +import ghidra.trace.model.time.schedule.TraceSchedule.TimeRadix; import ghidra.util.*; import ghidra.util.exception.CancelledException; import ghidra.util.exception.DuplicateFileException; @@ -1166,8 +1167,8 @@ public class TraceRmiHandler extends AbstractTraceRmiConnection { TraceSnapshot snapshot = switch (req.getTimeCase()) { case TIME_NOT_SET -> throw new TraceRmiError("snap or time required"); case SNAP -> open.createSnapshot(req.getSnap().getSnap()); - case SCHEDULE -> open - .createSnapshot(TraceSchedule.parse(req.getSchedule().getSchedule())); + case SCHEDULE -> open.createSnapshot( + TraceSchedule.parse(req.getSchedule().getSchedule(), TimeRadix.DEC)); }; snapshot.setDescription(req.getDescription()); if (!"".equals(req.getDatetime())) { diff --git a/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerTimePlugin/DebuggerTimePlugin.html b/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerTimePlugin/DebuggerTimePlugin.html index c8e7812b6c..a8f8beeaaa 100644 --- a/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerTimePlugin/DebuggerTimePlugin.html +++ b/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerTimePlugin/DebuggerTimePlugin.html @@ -101,5 +101,14 @@ emulated state into the trace's scratch space, which comprises all negative snaps. Some time-travel capable back ends may also write into scratch space. When this toggle is enabled, those scratch snapshots are hidden.
+ +These actions are available when a trace is active. It sets the display radix for snapshot + keys and time schedules throughout the tool. This is useful to match the display of + time coordinates with a back end that supports time travel. Notably, WinDbg TTD uses upper-case + hexadecimal for its event sequence numbers. Normally, the back end would set the UI's radix + automatically, but in case it does not, or if you'd like to override the radix, these actions + are available.