如何使用Visual Studio调试ISAPI

4
作为标题,我的朋友的环境是Windows 2003服务器。他附加了IIS进程,并在预计运行的代码处设置了断点,但VS根本不停止。该ISAPI是用VC++编写的。
他需要进行哪些设置?
谢谢。
3个回答

5

虽然有点晚了,但是有一个更简单的方法。

  • 右键点击你的(ISAPI)项目,选择“属性”
  • 在对话框中选择“配置属性” ->“调试”
  • 输入:
    • 命令:C:\ Windows \ System32 \ inetsrv \ w3wp.exe
    • 命令参数:-debug
  • 现在对你的项目执行“开始调试(F5)”。

Visual Studio将启动IIS的测试实例,你可以调试你的DLL,无需附加到进程等操作。

请确保提前停止IIS服务。


这对我在IIS 8.5上完美地运行了。然而,我发现必须以管理员身份运行Visual Studio才能使IIS加载ISAPI扩展。 - rushman

3

Visual Studio可以调试各种类型的代码:本机、脚本、托管、Silverlight等。在附加调试时,请确保“附加到”框中包含“本机代码”。

如果有多个w3wp.exe实例,请确保附加到正确的实例。


@PuspenduBanerjee:您是在Debug配置下构建扩展吗?您引用了dll以指示VS构建的位置吗?您正在附加正确的w3wp.exe实例(可能不止一个)吗?您确保选择了“Native”作为要调试的代码类型吗? - AnthonyWJones
除了将dll文件复制到我的应用程序文件夹[wwwroot]下,我已经完成了所有操作。 - Puspendu Banerjee
@PuspenduBanerjee:那就是你的问题了,要进行调试,你需要保持VS对路径关系(编译组件和源代码之间)的理解,这意味着你需要将dll保留在VS最初写入它的位置。 - AnthonyWJones

1
如果你的朋友正在本地主机上调试网站,AnthonyWJones的建议就足够了。
如果是在另一台机器上,他可能需要运行Visual Studio远程调试器,并给自己附加进程的权限。
你可以使用像Process Explorer这样的工具来帮助你找出哪个进程加载了你的扩展/过滤器,以便你可以附加到正确的进程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接