Partilhar via


Depuração de objetos Script em páginas ASP

Para depurar um objeto Script em páginas ASP, você deve considerar o seguinte:

  • O que é o modelo de objeto Script?

  • Depuração e a biblioteca de scripts

  • Ativar depuração de objeto Script

  • Relatório de erros

  • Rastreando eventos

  • Rastreando avisos

O que é o modelo de objeto Script?

O modelo de objeto Script ASP define um conjunto de objetos com eventos, propriedades e métodos que você pode usar dentro de seu aplicativo da Web.A maioria dos objetos Script representam interface do usuário, elementos como botões e caixas de texto, e função em uma maneira semelhante aos controles no Microsoft Visual Basic.

Objetos script no Microsoft Visual Studio 2005 não requerem um tempo de execução especial; eles são definidos em arquivos de script que estão incluídos no sua página ASP quando você usar os objetos. Embora esses arquivos sejam simplesmente Script, eles encapsulam comandos ActiveX Data Objects (ADO) e elementos HTML para criar objetos sofisticados que suportam programação orientada a eventos.

Há duas versões de cada objeto script: um que executa no servidor do ASP para navegadores genéricos que HTML 3.2 e outro que é executado no cliente no Internet Explorer 4.0 e posterior.O modelo de programação (eventos, métodos e propriedades) é idêntico para as duas versões.Objetos script podem ser criados e usados diretamente do código ou com a ajuda de controles em tempo de criação.Quando a página ASP é salva, o código objeto Script é persistido como uma combinação de HTML e script padrão.

Depuração e a biblioteca de scripts

Como objetos Script são escritos propriamente em script, depuração dos scripts que você escreveu e que interagem com o modelo de objeto script pode ser complicada, pelos seguintes motivos:

  • Primeiro, quando você usa o depurador para passar pelo seu próprio script, você pode ir parar com a depuração em código desconhecido e sofisticado da biblioteca do script.

  • Segundo, se um erro ocorrer dentro da biblioteca Script, a depuração através dela pode ser entediante e pode não ajudar você a indicar o erro.

  • Finalmente, às vezes pode ser difícil seguir a sequência de eventos e o fluxo de controle entre seu script e o modelo de objeto Script.

Agora você pode depurar seu aplicativo sob essas circunstâncias com essas opções de depuração de modelos de objeto scripts:

  • Capturar erros de nível inferior— Se um objeto script, como um recordset, encontrar um erro, ele pode alertá-lo com mensagens de erro detalhadas.Essa opção ajuda a localizar erros com componentes que pode falhar por razões externas.

  • Rastrear eventos — você pode fazer a página exibir uma lista de eventos que são acionados quando eles ocorrem.Essa opção ajuda a ver quando seus scripts estão sendo executados em relação aos eventos do modelo de objeto script.

  • Rastrear avisos — você pode ver mensagens de aviso indicando possíveis erros que ocorrem silenciosamente.Essa opção ajuda a encontrar problemas, como aqueles causados por passar parâmetros inválidos para um método.

Ativar depuração de objeto Script

Uma página ASP normalmente inclui um bloco de script na parte superior com opções de depuração.Por padrão, as opções estão desativadas.O bloco de script tem esta aparência:

<SCRIPT id=DebugDirectives runat=server language=javascript>

// Set these to true to enable debugging or tracing

@set @debug=false

@set @trace=false

</SCRIPT>

Depuração de objeto script requer JScript 5.0 ou posterior para ser executado no servidor.Você pode baixar JScript versão 5.0 no servidor do site da Microsoft.

Para ativar a depuração, defina as opções de depuração que você deseja para verdadeiro.Por exemplo, para detectar erros de nível inferior, alterar o bloco para:

<SCRIPT id=DebugDirectives runat=server language=javascript>
// Set these to true to enable debugging or tracing
@set @debug = true
@set @trace = false
</SCRIPT>

O bloco de opção de depuração deve aparecer imediatamente após a diretiva @Language na parte superior da página ASP.

Você pode definir quatro opções em todos, conforme descrito na lista a seguir:

Nome

Objetivo

@Debug

Relatórios de erros selecionados em objetos Script específicos

@Trace

Ativa ambas as seguintes opções de rastreamento.

@trace_events

Ativa o rastreamento de eventos.

@trace_warnings

Ativa a avisos para possíveis erros que ocorrem silenciosamente.

Detalhes sobre as configurações individuais aparecem em seções posteriores deste tópico.

Observação:

Se você definir @Trace como verdadeiro, ela prevalece sobre as configurações de @trace_events e @trace_warnings.No entanto, se @Trace for falsa, você pode ativar cada opção de rastreamento e desativar individualmente.

As opções de rastreamento individuais não fazem parte do bloco de script padrão na página ASP, você deve adicioná-los se você quiser definí-las individualmente.Por exemplo, o seguinte exemplo permitirá somente rastreamento de eventos, deixando avisos desativados:

<SCRIPT id=DebugDirectives runat=server language=javascript>

@set @debug = false

@set @trace = false

@set @trace\_events = true

</SCRIPT>

Se você estiver usando o Microsoft Internet Explorer 4.x, definindo qualquer uma das opções @Trace substituirá a marca BODY, que pode desativar a ligação de evento na marca BODY e causará atributos para serem ignorados.Esse problema não ocorre se você estiver usando o Internet Explorer 5.0 ou posterior.

O estilo de vinculação de evento a seguir não funcionará no Internet Explorer 4.0:

<BODY onload="initialize()">

Para contornar essa limitação, use um mecanismo de ligação diferente.Se você estiver usando Visual Basic, Scripting Edition (VBScript), você pode usar vinculação implícita:

<SCRIPT LANGUAGE="VBScript">

Function window_onload()

initialize()

End Function

</SCRIPT>

Se você estiver usando JScript, você pode chamar um script global que atribui um ponteiro de função a um evento do objeto janela, como no seguinte exemplo:

<SCRIPT LANGUAGE="JScript">
   window.onload = initialize
</SCRIPT>

Se a marca BODY atual conter atributos, você deve definir esses no script em vez disso, definindo propriedades do objeto do documento.Por exemplo, se a marca Body atual conter o atributo bgcolor = &quot; # FFFF00 &quot;, você pode definí-lo usando um script, como a seguir.Use a técnica listadas acima para chamar esse script quando o documento carrega pela primeira vez..

<SCRIPT LANGUAGE="JScript">
function initialize(){
   document.bgColor = "#FFFF00";
}
</SCRIPT>

Relatório de erros

Alguns objetos Script interagem com outros objetos fora sua página.Por exemplo, o objeto Recordset usa ADO para acessar bancos de dados.Se ocorrerem erros durante essas interações, as informações de erro reportadas pelo objeto externo podem ser ambíguas ou pode parecer incompleta no contexto da sua página.

A opção @debug habilita um mecanismo de relatório que captura e interpreta um conjunto comum desses tipos de erros.Informações de erro são gravadas na página ASP e aparece junto com conteúdo normal da página.Em alguns casos, a base da mensagem de erro aparece sublinhada.

Por exemplo, se @debug estiver definida como verdadeiro, e se o objeto Recordset tentar executar uma instrução SQL inválida, você pode ver algo como a seguir em sua página

SCRIPTING OBJECT MODEL EXCEPTION:

FILE: recordset.asp

FUNCTION: Recordset1.open()

DESCRIPTION: Failed to open the ADO recordset. Check for the following

possible causes:

An invalid SQL statement.

Missing or invalid database object name (check Recordset DTC properties)

Missing parameters or parameter type mismatch (parameters must be set

before recordset is opened).

Rastreando eventos

Quando uma página ASP usa o modelo de objeto script, os objetos Script individuais acionam eventos em resposta às alterações de estado (como Recordset1_ondatasetcomplete) ou em resposta às ações do usuário (como Button1_onclick).Frequentemente, você precisa saber quando seus próprios scripts estão sendo executados em relação aos eventos sendo acionados por script no modelo de objeto.

Para fazer isso, ative o rastreamento de eventos, definindo a opção @Trace ou @trace\_events como verdadeiro.Quando você habilita o rastreamento de eventos, as informações de eventos são gravadas para a página ASP como eles ocorrem.Por exemplo, uma parte de uma página ASP pode ter o aspecto como este:

EVENT TRACE: thisPage fired oninit event.

EVENT TRACE: Recordset1 fired onbeforeopen event.

EVENT TRACE: Recordset1 fired onrowenter event.

EVENT TRACE: Recordset1 fired ondatasetchanged event.

EVENT TRACE: Recordset1 fired ondatasetcomplete event.

Para determinar quando o script está sendo executado, inclua instruções Response.Write no pontos importantes, como ilustrado no script a seguir.O exemplo define um parâmetro para um conjunto de registros com base nas informações em uma caixa de texto.Cada etapa é relatada para exibí-la na página.

Sub btnQuery_onclick()

Recordset1.close()

Response.Write("Finished closing recordset.")

Recordset1.setParameter 1, txtLastName.value

Response.Write("Finished resetting query parameter.")

Recordset1.open()

Response.Write("Finished reopening recordset.")

End Sub

Usando comandos de compilação condicional JScript, você pode especificar que suas instruções Response.Write aparecem na página apenas se você definir opções de depuração.Por exemplo, no bloco a seguir, a instrução Response.Write só é executada se a opção @Trace é definida como verdadeira:

@if (@trace)

Response.Write("Ready to set SQL statement parameters.");

@end

Você não está limitado a usar as opções de depuração — você pode criar seus próprios sinalizadores de condição também, como no exemplo seguinte:

@set @trace\_custom = true

' ... other script here

@if (@trace_custom)

Response.Write("Ready to set SQL statement parameters.");

@end

Observação:

Antes de colocar as páginas em produção, certifique-se de definir quaisquer condições de depuração como falsa.

Para obter mais detalhes sobre compilação condicional, consulte os comandos @if e @set na seção de instruções do site de Scripting da Microsoft .

Rastreando avisos

Para fazer objetos Script tão robustos quanto possível e para minimizar a exibição de informações indesejadas em uma página ASP, objetos Script geralmente não relatam erros não fatais.Por exemplo, se você passar um valor inválido para um método do objeto Script e se o valor não fizer o objeto falhar completamente, o objeto continuará frequentemente a execução sem nenhuma mensagem de erro.Enquanto você estiver desenvolvendo seu aplicativo, no entanto, você geralmente desejará saber se o objeto Script experimentou um possível problema.Problemas não reportados às vezes pode resultar em problemas diferentes posteriormente durante execução da página, tornando mais difícil depurar a página.

A solução são avisos de rastreamento, definindo a opção @Trace ou @trace\_warnings como verdadeiro.Se um objeto Script encontrar um possível problema, ele gravará informações para a página no formato como o seguinte:

WARNING TRACE:

FILE: recordset.asp

FUNCTION: Recordset1.open()

DESCRIPTION: Recordset is already open.

Consulte também

Tarefas

Como: Habilitar depuração de script no Internet Explorer

Conceitos

Noções básicas sobre processamento de script ASP

Outros recursos

Depuração de aplicativos ASP