{"record":{"id":"275f59a0346e2bd5","repo":"JetBrains/intellij-community","slug":"inconsistent-debug-information","errorCode":null,"errorMessage":"Inconsistent debug information","messagePattern":"Inconsistent debug information","errorType":"exception","errorClass":"EvaluateException","httpStatus":null,"severity":"warning","filePath":"java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeDescriptorImpl.java","lineNumber":70,"sourceCode":"    if (myUserData == null) {\n      myUserData = new HashMap<>();\n    }\n    myUserData.put(key, value);\n  }\n\n  public void updateRepresentation(EvaluationContextImpl context, DescriptorLabelListener labelListener) {\n    updateRepresentationNoNotify(context, labelListener);\n    labelListener.labelChanged();\n  }\n\n  public void updateRepresentationNoNotify(EvaluationContextImpl context, DescriptorLabelListener labelListener) {\n    try {\n      try {\n        myEvaluateException = null;\n        myLabel = calcRepresentation(context, labelListener);\n      }\n      catch (InconsistentDebugInfoException e) {\n        throw new EvaluateException(JavaDebuggerBundle.message(\"error.inconsistent.debug.info\"));\n      }\n      catch (InvalidStackFrameException e) {\n        throw new EvaluateException(JavaDebuggerBundle.message(\"error.invalid.stackframe\"));\n      }\n      catch (ObjectCollectedException e) {\n        throw EvaluateExceptionUtil.OBJECT_WAS_COLLECTED;\n      }\n      catch (VMDisconnectedException e) {\n        throw e;\n      }\n      catch (RuntimeException e) {\n        if (e.getCause() instanceof InterruptedException) {\n          throw e;\n        }\n        if (context != null && context.getVirtualMachineProxy().canBeModified()) { // do not care in read only vms\n          LOG.debug(e);\n        }\n        else {","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/NodeDescriptorImpl.java#L52-L88","documentation":"NodeDescriptorImpl.updateRepresentationNoNotify catches InconsistentDebugInfoException from calcRepresentation (the code that computes the display label of a variables-tree node) and rethrows it as an EvaluateException with this message. InconsistentDebugInfoException is raised by the JDI layer when the target VM's reported type/field/method information contradicts itself — usually because loaded classes were redefined (hot-swap) while the debugger held cached mirrors.","triggerScenarios":"Expanding or refreshing the debugger Variables/Watch view after classes were redefined in the running VM (HotSwap), when two class loaders load different versions of the same class, or when struts of debug info differ between the IDE's cached ReferenceType and the live VM state.","commonSituations":"Iterative development with 'Reload Changed Classes' / build-while-debugging; remote debugging a server that hot-redeploys; multi-module projects where the same class exists on both the module output and a dependency jar.","solutions":["Restart the debug session (stop and re-run) so the debugger rebuilds its mirrors against the current VM state","Avoid partial HotSwap of structural changes (added/removed fields/methods are not hot-swappable) — rebuild and restart instead","Check for duplicate classes on the classpath (module output vs jar) and remove the stale copy","If it persists, invalidate caches (File | Invalidate Caches) and rebuild the project"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  descriptor.updateRepresentationNoNotify(context, listener);\n} catch (EvaluateException e) {\n  // debug info is inconsistent after class redefinition: refresh the session once\n  refreshVariablesViewAndRetryOnce(descriptor);\n}","preventionTips":["Do not hot-swap structural changes (fields/methods); rebuild and restart the session","Keep a single copy of each class on the classpath to avoid mixed debug info","Restart the debug session after larger code changes instead of stacking HotSwaps"],"tags":["intellij-debugger","jdi","hotswap","variables-view","class-redefinition"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}