Merge remote-tracking branch 'origin/GP-2177_d-millar_bpt_errors_SQRB--SQUASHED'

This commit is contained in:
Ryan Kurtz 2023-01-24 12:13:18 -05:00
commit eaf9c84963
19 changed files with 171 additions and 57 deletions

View file

@ -52,6 +52,8 @@ public class DebuggerPlaceBreakpointDialog extends DialogComponentProvider {
private JTextField fieldLength;
private JComboBox<String> fieldKinds;
private JTextField fieldName;
private PluginTool tool;
private String statusText = null;
public DebuggerPlaceBreakpointDialog() {
super(AbstractSetBreakpointAction.NAME, true, true, true, false);
@ -150,10 +152,12 @@ public class DebuggerPlaceBreakpointDialog extends DialogComponentProvider {
this.fieldLength.setText(Long.toUnsignedString(length));
this.fieldKinds.setSelectedItem(TraceBreakpointKindSet.encode(kinds));
this.fieldName.setText("");
this.tool = tool;
validateAddress();
setTitle(title);
statusText = null;
tool.showDialog(this);
}
@ -181,13 +185,20 @@ public class DebuggerPlaceBreakpointDialog extends DialogComponentProvider {
name = fieldName.getText();
ProgramLocation loc = new ProgramLocation(program, address);
service.placeBreakpointAt(loc, length, kinds, name).thenAccept(__ -> {
close();
}).exceptionally(ex -> {
service.placeBreakpointAt(loc, length, kinds, name).exceptionally(ex -> {
ex = AsyncUtils.unwrapThrowable(ex);
setStatusText(ex.getMessage(), MessageType.ERROR, true);
statusText = ex.getMessage(); // will be set when dialog is shown later
tool.showDialog(this);
return null;
});
close();
}
@Override
protected void dialogShown() {
if (statusText != null) {
setStatusText(statusText, MessageType.ERROR, true);
}
}
/* testing */

View file

@ -164,15 +164,17 @@ public class DefaultThreadRecorder implements ManagedThreadRecorder {
if (regMapper == null) {
throw new IllegalStateException("Have not found register descriptions for " + thread);
}
if (!regMapper.getRegistersOnTarget().containsAll(registers)) {
throw new IllegalArgumentException(
"All given registers must be recognized by the target");
List<TargetRegister> tRegs = registers.stream()
.map(regMapper::traceToTarget)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (tRegs.size() < registers.size()) {
Msg.warn(this,
"All requested registers must be recognized by the model as registers");
}
if (registers.isEmpty()) {
return CompletableFuture.completedFuture(Map.of());
}
List<TargetRegister> tRegs =
registers.stream().map(regMapper::traceToTarget).collect(Collectors.toList());
Set<TargetRegisterBank> banks = getTargetRegisterBank(thread, frameLevel);
if (banks == null) {