你目前正处于脱机状态,正在等待 Internet 重新连接

如何: 调试通用网关接口应用程序使用 Visual Studio 在 IIS 运行

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 238788
概要
本分步指南介绍了如何调试运行在 Internet Information Services (IIS) 的通用网关接口 (CGI) 应用程序使用 Visual Studio 的任何版本。

通过使用 Visual Studio 调试 Visual C 的 CGI 应用程序

若要通过使用 Visual Studio 的任何版本调试 Visual C CGI 应用程序,请按照下列步骤操作:
  1. IIS 管理服务必须与桌面交互。为此配置,请按照下列步骤操作:
    1. 打开 控制面板,请按照下列步骤操作:
      • 对于 Windows NT: 单击 服务
      • 对于 Windows 2000、 Windows XP 和.net 服务器: 单击 管理工具,然后单击 服务
    2. 双击 IIS 管理服务
    3. 登录 选项卡上选择 允许服务与桌面交互 复选框。

      注意本文假定 IIS 管理服务作为本地系统在运行。
    4. 停止并重新启动 IIS 管理服务。
  2. 包括 Windows.h 文件之前,添加下面的代码,然后生成 CGI 的调试版本:
    #define _WIN32_WINNT 0x0400					
  3. 将以下代码粘贴到的 CGI 开头:
    #ifdef _DEBUGchar szMessage [256];wsprintf (szMessage, "Please attach a debugger to the process 0x%X (%s) and click OK",      GetCurrentProcessId(), argv[0]);MessageBox(NULL, szMessage, "CGI Debug Time!",      MB_OK|MB_SERVICE_NOTIFICATION);#endif					
  4. 启动 CGI 应用程序。
  5. 将调试程序 (如 WinDBG 或 Visual C) 附加到 CGI 处理时,会显示一个消息框。
  6. 当将调试器连接时打开源文件和设置一个断点,然后单击 确定

    当关闭消息框时,CGI 程序继续执行,并会命中断点。

使用 WinDBG

尽管您不必更改任何代码,请调试 CGI 应用程序与 WinDBG,必须熟悉 WinDBG 并安装调试工具。您可以从下面的 Microsoft 网站下载调试工具:

设置服务选项

设置 图像文件执行 选项,以便在调试器下启动该服务 (或 CGI 程序) 启动时。本文内上文中的说明,请确保该服务可以与该的桌面进行交互。否则为时将启动 CGI 程序加载调试器,您将不会看到它。
  1. 启动注册表编辑器 (Regedt32.exe),请执行以下操作:

    单击 开始、 单击 运行,然后键入 regedt32
  2. 找到以下注册表项:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image 文件执行 Options\]
  3. 创建一个子项 (例如 MyCGI.exe) CGI 可执行文件的名称。
  4. 向此子项,添加名为调试器和要在调试器中,完整 REG_SZ 值,但忽略".exe"扩展名。您还可以添加的任何命令调试器。若要安装该 WinDBG 默认位置是下面:
    "Debugger"="C:\\Debuggers\\windbg.exe"
    注意指向 WinDBG 调试器的路径不能包含任何空格或文件扩展名。例如对于 windbg,如以下所示:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image 文件执行 Options\yourCGI.exe"调试器"="C:\windbg"
  5. 关闭注册表编辑器。
  6. 停止和启动 IISADMIN 服务,然后运行 CGI 程序。

    注意对于出现默认桌面调试器在 IIS 管理服务必须运行与本地的系统,您必须选择 允许服务与桌面交互 复选框。若要此配置请转到本文内上文中说明的步骤 1。
  7. 调试器将启动时启动图像服务的可执行文件加载到内存。
注意您可能需要将调试器附加将 CreateProcessAsUser 属性的值设置为 false 元数据库中。这是因为 CGI 应用程序运行的帐户可能不继承时产生 CGI 可执行文件是 允许与桌面交互服务 设置为在 IIS 管理服务。您可以使用 adsutil.vbs 管理脚本来设置 允许与桌面交互服务 设置。默认状态下,该设置为 true。例如对于使用以下命令:
adsutil.vbs w3svc/CreateProcessAsUser false
参考
有关调试的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
273639如何: 开始 IISAdmin 和 $ 下一调试器的从属服务
286350如何: 使用 ADPlus 对进行疑难解答"挂起"和"崩溃"
261871信息: COM + 和 MTS 调试资源
183480如何: 调试在 IIS 4.0 和 IIS 5.0 的 ISAPI dll

Warning: This article has been translated automatically

属性

文章 ID:238788 - 上次审阅时间:12/03/2007 21:26:24 - 修订版本: 4.7

Microsoft Internet Information Server 2.0, Microsoft Internet Information Server 3.0, Microsoft Internet Information Server 4.0, Microsoft Internet Information Services 5.0, Microsoft Internet Information Services version 5.1, Microsoft Internet Information Services 6.0

  • kbmt kbcgi kbhowto kbhowtomaster KB238788 KbMtzh
反馈