diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DebuggerMappingOpinion.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DebuggerMappingOpinion.java
index 3b642aa007..6459107cd7 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DebuggerMappingOpinion.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/mapping/DebuggerMappingOpinion.java
@@ -19,6 +19,7 @@ import java.util.*;
import ghidra.dbg.DebuggerObjectModel;
import ghidra.dbg.target.*;
+import ghidra.util.Msg;
import ghidra.util.classfinder.ClassSearcher;
import ghidra.util.classfinder.ExtensionPoint;
@@ -29,6 +30,7 @@ public interface DebuggerMappingOpinion extends ExtensionPoint {
/**
* Query all known opinions for recording/tracing a debug session
*
+ *
* The returned offers are ordered highest-confidence first.
*
* @param target the target to be recorded, usually a process
@@ -38,8 +40,15 @@ public interface DebuggerMappingOpinion extends ExtensionPoint {
List result = new ArrayList<>();
for (DebuggerMappingOpinion opinion : ClassSearcher
.getInstances(DebuggerMappingOpinion.class)) {
- synchronized (result) {
- result.addAll(opinion.getOffers(target));
+ try {
+ Set offers = opinion.getOffers(target);
+ synchronized (result) {
+ result.addAll(offers);
+ }
+ }
+ catch (Throwable t) {
+ Msg.error(DebuggerMappingOpinion.class,
+ "Problem querying opinion " + opinion + " for recording/mapping offers");
}
}
result.sort(HIGHEST_CONFIDENCE_FIRST);
diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/platform/GdbArmDebuggerMappingOpinion.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/platform/GdbArmDebuggerMappingOpinion.java
index 0d771e55d5..010cffb3b7 100644
--- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/platform/GdbArmDebuggerMappingOpinion.java
+++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/platform/GdbArmDebuggerMappingOpinion.java
@@ -45,7 +45,11 @@ public class GdbArmDebuggerMappingOpinion implements DebuggerMappingOpinion {
}
}
+ @Override
public Set offersForEnv(TargetEnvironment env, TargetProcess process) {
+ if (env == null) {
+ return Set.of();
+ }
if (!env.getDebugger().toLowerCase().contains("gdb")) {
return Set.of();
}