2010-04-26 74 views
10

因此,这个有趣的问题一直困扰着我过去的几个小时。 Visual Studio 2010 Ultimate不再附加调试器并让我调试我的代码。Visual Studio 2010不允许我调试我的代码

如果我使用内置的开发服务器,然后一切工作正常。如果我切换到使用本地IIS Web服务器(http://localhost/),那么它将附加到w3wp.exe,但没有任何DLL或PDB被加载。我可以去调试> Windows>模块,并且从字面上什么也没有加载在这个窗口。相反,使用内置开发服务器时,“模块”窗口显示所有DLL,并显示我的DLL的符号已加载。有些东西显然是不对的。 VS安装完全是骨骼库存。

在IIS中,我的网站配置了ASP.NET 2.0(因为没有3.5的存在是为了从下拉菜单中选择),与陪读/日志访问/索引“主目录”选项卡中选中此资源选项。

我的一些失败想法:
1)如果我附加在显示网站的iexplore.exe实例上的进程,它会加载Internet Explorer的DLL,但不是我的。我已经调用了devenv.exe/resetuserdata一次
4)我已经确认每个项目的确设置为调试而不是释放。
5)删除所有\ bin内容并重建解决方案。
6)删除整个解决方案并从源代码管理中删除。

谁能告诉我什么是错的这个东西?我会因为这引起我的头痛而产生动脉瘤。

回答

3

你需要将它连接到IIS工作进程,OS您使用哪一个?确保在附加到进程中附加了Managed + Native标志。如果您只是在Visual Studio中运行(F5)Web应用程序(会自动附加调试程序),会发生什么情况?你有任何错误?

+0

它看起来像你在做什么。我做了一些小改动,但没有反映出来。调试器正试图连接到w3wp.exe,如下所示:http://img710.imageshack.us/img710/4606/outputwindow.png – Tejs 2010-04-26 21:53:03

+0

您是否设置了任何断点?如果是的话,当Visual Studio被连接时,如果你去了一个断点,它说什么?如果断点不能被击中,通常会有一条消息 – 2010-04-26 22:27:52

+0

您知道,为了确保一切正常,我建议您从全新/全新(以及Visual Studio创建它)Web应用程序开始。一旦你确定使用IIS工作(调试),我们可以继续排除其他可能性。如果代码是由CLR 4.0加载的,但是您附带了CLR 2.0标志,并且调试器的期望不同,则可能没有正确地附加到进程。 – 2010-04-27 05:05:19

0

您是否尝试删除浏览器缓存?有时浏览器会挂起与当前版本不兼容的旧代码,从而阻止调试。

+0

我已经清除IE的缓存,以及Chromes。当我使用本地IIS Web服务器时,两个浏览器都不起作用。当我将它设置为内置服务器时,两者都可以工作。 – Tejs 2010-04-26 21:15:06

0

我已经在构建配置屏幕下的一些项目取消选中特定的解决方案配置,使他们无法建立,因此无法调试的前一个问题。您能确认您所做的代码更改是否实际正在构建和执行?

而且,你运行的是什么版本的Windows和IIS的?您的流程是否可能在AppPool下运行,账户与您登录的账户不同,也许是权限问题?如果是Vista/Win7,UAC是否打开并且以管理员身份运行VS?我也会第二个建议尝试一个新项目,看看有什么功能。你是否在机器上的调试器用户本地组?

+0

所有项目目前都设置为在Configuration Manager中构建。 7)另外,我没有引用,然后重新添加对依赖项目的引用。 – Tejs 2010-04-26 21:12:53

0

它运行的应用程序 - 没有调试器附着?它闻起来像你的调试器附加到一个错误的过程

+0

它完全运行应用程序。但是,如果它附加到某个其他进程上,那么为什么没有这个进程的DLL会显示在Module窗口中? – Tejs 2010-04-26 21:34:24

1

那么这里还有不少很好的答案,但我发现我的问题的根本原因是应用程序池身份验证配置。让我说出我经历的情景和解决方案,也许它会帮助别人节省时间....和头发。

场景:
我想调试在Visual Studio 2010中的ASP.NET Web应用程序,但无法使用内置Visual Studio的Web服务器。我无法使用内置Web服务器的原因是我的应用程序引用了专门为64位体系结构构建的程序集,而VS Web服务器不支持这些。所以,我必须使用网站属性中的“使用自定义Web服务器”选项,将调试器指向我的站点的已发布实例,并将其放在远程IIS Web服务器上。

问题:
即使正确地设置在装配输出发布调试符号的Web.config调试选项(即编译调试=“真”),调试器不会连接到远程IIS进程和我没有击中任何断点

环境:
的Visual Studio 2010中的调试器已经安装在远程IIS Web服务器上,并运行作为本地系统帐户下一个Windows服务。

解决方案
除了上托管的IIS Web服务器上的网站启用“匿名身份验证”改为“Windows身份验证”。

只要我启用匿名身份验证,正确的符号由VS远程调试器加载,我能够击中断点。

希望这可以帮助你们。

相关问题