COMO: Depurar as aplicações de Interface de Gateway comum com IIS utilizando o Visual Studio

Aplica-se a: Internet Information Services

Resumo


Este artigo passo a passo descreve como depurar aplicações Common Gateway Interface (CGI) em execução em serviços de informação Internet (IIS) utilizando qualquer versão do Visual Studio.

Depurar uma aplicação de CGI Visual C utilizando o Visual Studio

Para depurar uma aplicação Visual C CGI utilizando qualquer versão do Visual Studio, siga estes passos:
  1. O IIS Admin Service tem interagir com o ambiente de trabalho. Para configurar esta definição, siga estes passos:
    1. Abra o Painel de controlo e siga estes passos:
      • Para o Windows NT: Clique em Serviços.
      • Para Windows 2000, Windows XP e .NET Server: clique em Ferramentas administrativase, em seguida, clique em Serviços.
    2. Faça duplo clique sobre o Serviço Admin do IIS.
    3. No separador Iniciar sessão , seleccione a caixa de verificação Permitir que o serviço para interagir com o ambiente de trabalho . Nota Este artigo pressupõe que o serviço de administração do IIS é executado como sistema local.
    4. Pare e reinicie o serviço de administração do IIS.
  2. Antes de incluir o ficheiro de Windows.h, adicione o seguinte código e, em seguida, criar uma versão de depuração do CGI:
    #define _WIN32_WINNT 0x0400
  3. Cole o seguinte código no início da 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. Inicie a aplicação de CGI.
  5. Anexe um depurador (como WinDBG ou Visual C) para o processo CGI enquanto é apresentada uma caixa de mensagem.
  6. Quando o depurador for anexado, abra o ficheiro de origem e definir um ponto de interrupção e, em seguida, clique em OK. Quando a caixa de mensagem é fechada, o programa CGI retoma e o ponto de interrupção será accionado.

Utilizar o WinDBG

Para depurar uma aplicação CGI com WinDBG, apesar de não ter de alterar qualquer código, é necessário estar familiarizado com o WinDBG e instalar as ferramentas de depuração. Pode transferir as ferramentas de depuração a partir do seguinte Web site da Microsoft:

Definir opções de serviço

Defina as opções de Execução de ficheiro de imagem para que quando o serviço (ou o programa CGI) é iniciado, iniciado no depurador. Certifique-se de que o serviço pode interagir com o ambiente de trabalho, conforme indicado neste artigo. Caso contrário, quando o programa CGI for iniciado, carrega o depurador e não poderá ver.
  1. Editor de registo de início (Regedt32.exe): clique em Iniciar, clique em Executare, em seguida, escreva regedt32.
  2. Localize a seguinte chave do registo:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image ficheiro opções de execução]
  3. Crie uma subchave com o nome do ficheiro executável CGI (por exemplo, MyCGI.exe).
  4. Nesta subchave, adicione o valor REG_SZ com o nome depurador e o caminho completo para o depurador, mas omitir a extensão ".exe". Também pode adicionar quaisquer comandos para o depurador. A localização predefinida para instalar o WinDBG é a seguinte:
    "Debugger"="C:\\Debuggers\\windbg.exe"
    Nota O caminho que aponta para o depurador WinDBG não deve conter espaços ou as extensões de ficheiro. Por exemplo, windbg, tal como ilustrado no seguinte:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image ficheiro execução Options\yourCGI.exe "depurador"="C:\windbg"
  5. Feche o Editor de Registo.
  6. Parar e iniciar o serviço IISADMIN e, em seguida, execute o programa CGI. Nota Para o depurador apareça no ambiente de trabalho predefinido, o serviço de administração do IIS deve ser executado como sistema Local e tem de seleccionar a caixa de verificação Permitir que o serviço para interagir com o ambiente de trabalho . Para configurar esta definição, vá para o passo 1 das instruções neste artigo.
  7. O depurador será iniciado quando a imagem para o ficheiro executável do serviço é carregada na memória.
Nota Tem de definir o valor da propriedade CreateProcessAsUser na metabase como false para anexar um depurador. Isto acontece porque a conta que a aplicação de CGI é executada no não pode herdar a definição de Permitir que o serviço para interagir com o ambiente de trabalho para o serviço de administração do IIS quando o ficheiro executável de CGI é gerado. Pode utilizar o script de administração de adsutil. vbs para configurar a definição de Permitir que o serviço para interagir com o ambiente de trabalho . Por predefinição, a definição é true. Por exemplo, utilize o seguinte comando:
adsutil. vbs w3svc/CreateProcessAsUser "false"

Referências


Para obter informações adicionais sobre a depuração, clique nos números de artigo abaixo para visualizar os artigos na Microsoft Knowledge Base:
273639 como: Iniciar IISAdmin e serviços dependentes sob um depurador
286350 como: utilizar ADPlus para resolução de problemas "Não reage" e "Falha"
261871 INFO: COM+ e depuração de recursos MTS
183480 como: depurar DLLs ISAPI no IIS 4.0 e IIS 5.0