{"record":{"id":"4dd88cb9430d4321","repo":"NationalSecurityAgency/ghidra","slug":"address-is-not-associated-with-a-breakpoint-contai","errorCode":null,"errorMessage":"Address is not associated with a breakpoint container","messagePattern":"Address is not associated with a breakpoint container","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java","lineNumber":78,"sourceCode":"\t\tif (!regionsInSpace.isEmpty()) {\n\t\t\treturn regionsInSpace.iterator().next();\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate TraceObject findBreakpointContainer() {\n\t\tTraceMemoryRegion region = findRegion();\n\t\tif (region == null) {\n\t\t\tthrow new IllegalArgumentException(\"Address does not belong to a memory in the trace\");\n\t\t}\n\t\treturn region.getObject().findSuitableContainerInterface(TraceBreakpointSpec.class);\n\t}\n\n\tprivate String computePath() {\n\t\tString name = createName(address);\n\t\tTraceObject container = findBreakpointContainer();\n\t\tif (container == null) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\t\"Address is not associated with a breakpoint container\");\n\t\t}\n\t\tPathFilter specFilter = container.getSchema().searchFor(TraceBreakpointSpec.class, true);\n\t\tif (specFilter == null) {\n\t\t\tthrow new IllegalArgumentException(\"Cannot find path to breakpoint specifications\");\n\t\t}\n\t\tKeyPath specRelPath = specFilter.applyKeys(name).getSingletonPath();\n\t\tif (specRelPath == null) {\n\t\t\tthrow new IllegalArgumentException(\"Too many wildcards to breakpoint specification\");\n\t\t}\n\t\tPathFilter locFilter = container.getSchema()\n\t\t\t\t.getSuccessorSchema(specRelPath)\n\t\t\t\t.searchFor(TraceBreakpointLocation.class, true);\n\t\tif (locFilter == null) {\n\t\t\tthrow new IllegalArgumentException(\"Cannot find path to breakpoint locations\");\n\t\t}\n\t\tKeyPath locRelPath = locFilter.applyIntKeys(0).getSingletonPath();\n\t\tif (locRelPath == null) {","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/service/breakpoint/PlaceEmuBreakpointActionItem.java#L60-L96","documentation":"Thrown by PlaceEmuBreakpointActionItem.computePath when the region's TraceObject has no suitable container exposing the TraceBreakpointSpec interface. The object schema for the region does not provide a place to attach breakpoint specifications.","triggerScenarios":"findSuitableContainerInterface(TraceBreakpointSpec.class) on the region's object returns null because the trace's object schema does not define a breakpoint-spec container reachable from that region.","commonSituations":"Using a trace whose schema (e.g., a custom or minimal object schema) lacks breakpoint interfaces; placing emu breakpoints on object models not designed for the standard debugger breakpoint workflow; older/incompatible trace schema versions.","solutions":["Use a trace built from the standard debugger object schema that defines TraceBreakpointSpec containers.","Ensure the trace's schema includes breakpoint spec/location interfaces under the memory branch.","Switch to the default/managed object schema for the target before placing breakpoints.","Upgrade or migrate the trace to a schema version that supports breakpoint specs."],"exampleFix":"// before\nTraceObject container = findBreakpointContainer(); // null\nif (container == null) throw ...; // 'not associated with a breakpoint container'\n\n// after (guard up front)\nTraceObject regionObj = findRegion().getObject();\nTraceObject container = regionObj.findSuitableContainerInterface(TraceBreakpointSpec.class);\nif (container == null) {\n    Msg.showError(this, null, \"Cannot place emu breakpoint\",\n        \"Trace schema has no breakpoint container for this region.\");\n    return;\n}","handlingStrategy":"validation","validationCode":"TraceObject obj = findRegion().getObject();\nboolean hasContainer = obj.findSuitableContainerInterface(TraceBreakpointSpec.class) != null;","typeGuard":"static boolean hasBpContainer(TraceMemoryRegion r) {\n    return r.getObject().findSuitableContainerInterface(TraceBreakpointSpec.class) != null;\n}","tryCatchPattern":"try {\n    item.execute();\n} catch (IllegalArgumentException e) {\n    Msg.showError(this, null, \"Schema unsupported\", e.getMessage());\n}","preventionTips":["Use the standard managed-object schema for traces.","Verify breakpoint container interfaces exist before enabling the action."],"tags":["breakpoint","emu","container","object-schema","trace"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}