首页 文章

附加到处理w3sp.exe并选择AppPool

提问于
浏览
2

我正在尝试使用Visual Studio 2010中的功能,该功能允许用户连接到正在运行的进程以进行调试 . 我附加到w3wp.exe进程 . 这是我的问题:如果我附加到DefaultAppPool,我的断点不能被命中(“断点当前不会被命中 . 没有为此文档加载符号”) . 但是,如果我使用经典.NET应用程序池连接,那么我的断点可行(至少,他们做了一个) .

我的问题是,经典.NET应用程序池并不总是作为“附加到进程”对话框中的选项列出 . 我已经通过转到我的计算机上的IIS(7)并检查应用程序池来验证两个应用程序池都在运行 . 我还尝试将“附加到:”设置从“托管(v4.0)代码”更改为“托管(v2.0,v1.1,v1.0)代码” . 它似乎没有什么区别(我在每次更改后刷新列表) .

任何人都可以解释为什么经典应用程序池有时会出现在“附加到进程”列表中但不总是?

所有这一切都是因为我从未能够在Visual Studio中使应用程序正常调试 . (see this thread)我工作了几天试图解决"No symbols have loaded"错误 . 但是,我注意到当我的同事在他的机器上调试应用程序时(它适用于他),他在调试>> Windows >>模块中有很多"Cannot find or open the PDB file"错误但是,他的断点仍然有效 . 所以,我认为这不是问题 .

一个说明 . 当我使用IIS 7时,我的同事正在使用IIS 6.我认为这就是为什么类应用程序池对我来说很简单 . 现在,如果我能以某种方式再次附加它...

2 回答

  • 3

    使用输出调试PDB的配置文件构建项目,并确保通过 <compilation debug="true"> 在web.config中启用调试 .

    您需要附加的应用程序池是您的应用程序运行的任何应用程序池,无论应用程序池的名称是什么 .

  • 2

    一些提示:

    1)确保在Build选项卡上的项目属性中,关闭“优化代码”复选框 . 确保pdbs与您尝试调试的程序集并排在一起 .

    2)在查找正确的工作进程时,您可以运行appcmd list wp(作为管理员)以获取正确的进程ID .

    3)确保远程调试器正在运行(具有适当的位数) .

    4)检查模块窗口并确保加载了您要调试的程序集 . 如果没有加载它(右键单击) .

    在尝试了所有那些善意的建议之后 .

相关问题