• T
    EnC simplify reporting module diagnostics. (#40999) · d794dbee
    Tomáš Matoušek 提交于
    Previously we reported diagnostics caused by the debuggee not allowing edits in the corresponding module in EnC diagnostic analyzer.
    A module does not support edits if any of its instances does not support the edits. There are scenarios in which module instances may be loaded while in break mode.
    E.g. if the user attaches to a secondary process while debugging a primary process, the secondary process might have a module instance loaded of the same module loaded to the primary process.
    To handle these cases we hooked up debugger module load/unload events and invalidated the reported diagnostics.
    
    This approach has a few problems:
    1) EnC analyzer is now non-deterministic, as it can give different answers for the same inputs depending on the state of the debuggee
    2) Turns out that the debugger does not deliver module load/unload events in all cases (e.g. when the secondary process is killed).
    3) It's a bit complicated and would get even more complicated once we moved EnC to OOP/Cloud
    
    Instead, we don't report these errors until the user triggers the "continue" action. At this point the VS and all processes being debugged are blocked until the changes analyzed and applied.
    Since this situation is not very common the slight regression in interactivity is acceptable.
    d794dbee
VisualStudioDebugStateChangeListener.cs 2.6 KB