Multithreading 如何在断点中支持的调试器内设置断点

Multithreading 如何在断点中支持的调试器内设置断点,multithreading,debugging,vbscript,com,active-script,Multithreading,Debugging,Vbscript,Com,Active Script,我正在为VBScript主机编写一个调试器。我的调试器是一个外部应用程序。一切都很好。我接到了对我的iApplicationDebug::onHandleBreakPoint处理程序的调用。我可以调用IDebugApplication::ResumeFromBreakPoint,然后逐步完成代码 也可以在运行脚本之前设置断点。再次调用IApplicationDebug::onHandleBreakPoint。此外,还会处理错误。但现在我想在IApplicationDebugger::onHand

我正在为VBScript主机编写一个调试器。我的调试器是一个外部应用程序。一切都很好。我接到了对我的iApplicationDebug::onHandleBreakPoint处理程序的调用。我可以调用IDebugApplication::ResumeFromBreakPoint,然后逐步完成代码

也可以在运行脚本之前设置断点。再次调用IApplicationDebug::onHandleBreakPoint。此外,还会处理错误。但现在我想在IApplicationDebugger::onHandleBreakPoint中挂起时设置一个新断点

我有一个指向IActiveScriptDebug的封送指针。但是当我调用IActiveScriptDebug::EnumCodeContextSof定位应用程序块时。这对我来说是合乎逻辑的。带有IActiveScript(IActiveScriptDebug)对象的线程驻留在不同的STA中,并且仍然在调试器中被阻止,如文档所述


但是,从调试器线程访问语言引擎的正确方法是什么。我所需要的只是一个特定代码行的IDebugCodeContext或IEnumDebugCodeContext接口。我是否缺少可以访问以实现相同功能的其他接口。

主要解决方案是使用IDebugSyncOperation并调用CreateAncySyncDebugOperation。这允许我联系当前调试的被阻止的语言引擎

下一个问题是,我需要设置断点的一些接口(IDebugApplication32和IDebugApplicationThread)无法封送到其他进程

可以在承载VBScript语言引擎的进程中使用此接口,并且可以在此应用程序中自由使用这些接口

因此,我的问题的解决方案是,从我的外部调试器EXE联系被调试的应用程序,并执行所有操作以在被调试的应用程序内设置断点

很难发现调试接口的某些接口可以自由编组到不同的单元,而其他接口则不能


所有这些东西都没有记录在案。遗憾的是:(

你能分享一些你能够启动的链接吗?例如:你如何将你的调试器IDE“附加”到一个正在运行的应用程序上?这是我发现的最好的一个(即使这个也是有缺陷的)这篇文章:你仍然需要做一些修改才能运行它…非常感谢你的链接。但是,源代码不可用。你在哪里找到它的?这个链接对我有用:不。不是正确的代码。这里是指向我的dropbox的链接。