我正在为 VBScript 主机编写调试器。我的调试器是一个外部应用程序。一切都很好。我接到 IApplicationDebugger::onHandleBreakPoint 处理程序的电话。我可以调用 IDebugApplication::ResumeFromBreakPoint 并且可以单步执行代码。
也可以在我运行脚本之前设置断点。再次调用 IApplicationDebugger::onHandleBreakPoint。还会处理错误。但是现在我想在 IApplicationDebugger::onHandleBreakPoint 中暂停时设置一个新断点。
我有一个指向 IActiveScriptDebug 的封送指针。但是当我调用 IActiveScriptDebug::EnumCodeContextsOfPosition 时,应用程序会阻塞。这对我来说是合乎逻辑的。具有 IActiveScript (IActiveScriptDebug) 对象的线程驻留在不同的 STA 中,并且仍如文档所述在调试器中被阻止。
但是从我的调试器线程访问语言引擎的正确方法是什么。我只需要一个用于特定代码行的 IDebugCodeContext 或 IEnumDebugCodeContexts 接口。我是否缺少可以访问以实现相同功能的不同界面。