我需要 Visual Studio 扩展来对调试事件使用react。我已经注册了一个 IDebugEventCallback2
并且正在接收事件,但我为每个事件获得的只是一个不透明的 IDebugEvent2
和一个 Guid,其中许多不仅没有记录,而且不会出现在网络上的任何位置(或在我的注册表中)。
我目前的具体要求是知道该过程何时继续 - 即。用户点击了“继续”、“运行到光标”等。我应该寻找什么 Guid?
或者我应该订阅其他一些事件系列吗?
(更一般地说,当其中许多事件没有出现在 MSDN 或还有其他地方吗?谢谢!)
最佳答案
没有简单的方法可以做到这一点。 继续和运行到光标等操作是 Visual Studio 实现的抽象,不对应于调试引擎的任何唯一事件。调试引擎事件报告接口(interface) IDebugEventCallback2
将使您能够仅在细粒度事件(例如创建断点或到达断点时)收到通知。
虽然 Visual Studio 允许您以编程方式执行继续和运行到光标等操作,但它不提供直接方式来在执行这些操作时收到通知。
您可以使用EnvDTE.DebuggerEvents.OnXxx事件即将发生时收到通知。特别是,OnEnterBreakMode
事件使您能够拦截断点命中并可能执行操作。您还可以使用当前 EnvDTE.Debugger 检查到达断点的所有详细信息。在事件处理程序内。
现在,通过一些努力,您可以使用这些构造来准确地实现与所有 Visual Studio 调试操作(包括继续和运行到光标)相对应的事件。如果您需要 EnvDTE.DebuggerEvents
未提供的其他事件(例如插入断点时),则别无选择,只能使用 IDebugEventCallback2.Event
。在这种情况下,如果您有特定的事件,请明确提及它们,我也许可以告诉您相应的 IDebugEventCallback2.Event
GUID。
关于visual-studio - 在 Visual Studio 扩展中,如何检测调试器何时继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853341/