diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java index f92f0d2bc6..8ec74ccb89 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java @@ -1113,6 +1113,10 @@ public class DebuggerModulesProvider extends ComponentProviderAdapter } bestModule = module; } + if (bestModule == null) { + setSelectedModules(Set.of()); + return; + } if (bestModule.getSections(snap).isEmpty()) { setSelectedModules(Set.of(bestModule)); return; diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java index 87c389db13..7525014d7f 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/time/SnapshotRow.java @@ -182,7 +182,7 @@ public class SnapshotRow { if (thread != null) { return thread; } - return getTime().getEventThread(trace); + return getTime().getLastThread(trace); } public String getEventThreadName() { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java index 898754a2a7..5b0e66d761 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/DebuggerEmulationServicePlugin.java @@ -742,6 +742,8 @@ public class DebuggerEmulationServicePlugin extends Plugin implements DebuggerEm destSnap.setDescription("Emulated"); try { ce.emulator().writeDown(key.platform, destSnap.getKey(), key.time.getSnap()); + TraceThread lastThread = key.time.getLastThread(key.trace); + destSnap.setEventThread(lastThread); } catch (Throwable e) { Msg.showError(this, null, "Emulate", diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java index 88d4400cc3..a6630d0802 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/emulation/ProgramEmulationUtils.java @@ -643,7 +643,8 @@ public class ProgramEmulationUtils { pc.getAddressSpace().isOverlaySpace() ? List.of(pc.getAddressSpace()) : List.of(); loadExecutable(initial, program, overlays); - doLaunchEmulationThread(trace, snap, program, pc, pc); + TraceThread thread = doLaunchEmulationThread(trace, snap, program, pc, pc); + initial.setEventThread(thread); } trace.clearUndo(); success = true; diff --git a/GhidraDocs/GhidraClass/Debugger/ghidra_scripts/InstallCustomLibraryScript.java b/GhidraDocs/GhidraClass/Debugger/ghidra_scripts/InstallCustomLibraryScript.java index 8039dc61b1..1554d2b57e 100644 --- a/GhidraDocs/GhidraClass/Debugger/ghidra_scripts/InstallCustomLibraryScript.java +++ b/GhidraDocs/GhidraClass/Debugger/ghidra_scripts/InstallCustomLibraryScript.java @@ -4,17 +4,17 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ -import ghidra.app.plugin.core.debug.service.emulation.*; -import ghidra.app.plugin.processors.sleigh.SleighLanguage; +import ghidra.app.plugin.core.debug.service.emulation.BytesDebuggerPcodeEmulator; +import ghidra.app.plugin.core.debug.service.emulation.BytesDebuggerPcodeEmulatorFactory; import ghidra.app.script.GhidraScript; import ghidra.debug.api.emulation.DebuggerPcodeMachine; import ghidra.debug.api.emulation.PcodeDebuggerAccess; @@ -30,8 +30,7 @@ public class InstallCustomLibraryScript extends GhidraScript implements FlatDebu @Override protected PcodeUseropLibrary createUseropLibrary() { return super.createUseropLibrary() - .compose(new ModelingScript.SleighStdLibPcodeUseropLibrary<>( - (SleighLanguage) access.getLanguage())); + .compose(new ModelingScript.SleighStdLibPcodeUseropLibrary<>(getLanguage())); } }