这是一个奇怪且非常烦人的问题。 我正在将 Visual Studio 2010 用于 ASP.NET Webforms 项目。我能够在 ActiveX 控件中设置断点,加载页面,然后将 Visual Studio 调试器附加到正在运行的 Internet Explorer 进程(显示为类型“脚本、T-SQL、托管”),然后重新加载页面,我的断点将是打。 然而,经过几次小的细微更改(以及大量整理更改)后,当我做同样的事情时,我的断点没有被命中。断点看起来不错 - 主要的变化是当我查看“调试”>“窗口”>“模块”屏幕时,现在没有对 iexplore 进程的引用,即使调试器仍然连接到它。 我有点不愿意撤消所有更改,但我怀疑这可能与 IP 地址有关。大多数代码应该作为 ipv4 地址运行,但我怀疑 Visual Studio 调试器正在使用 ipv6 地址运行。
有人遇到过此类问题,即 IP 地址版本扰乱了调试过程吗?
最佳答案
好的,一周后找到了解决方案!这与 IP 地址无关。 ActiveX组件仅限于.NET 3.5.0,因此当它被IE加载时,它在.NET 2.0中运行。该项目的其余部分是 .NET 4.0,当 Visual Studio 调试时,它会自动调试默认为 .NET 4.0 的代码类型“自动: native ”。虽然我可以附加到 IE 进程,并且所有断点看起来都正常(实心圆圈),但没有一个断点被击中,因为没有加载符号。在附加到 IE 进程时单击“选择”按钮,允许我选择托管(v2.0、v1.1、v1.0)代码并命中断点。您无法同时调试 .NET 4.0 和 .NET 2.0,但可以使用 Visual Studio 的两个单独实例来调试整个项目。 希望这对像我一样被这个绊倒的人有所帮助。
关于c - 使用 Visual Studio 2010 调试 ActiveX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929694/