Partager via


Débogage des objets de script dans les pages ASP

Mise à jour : novembre 2007

Pour déboguer un objet de script dans les pages ASP, vous devez prendre en compte les éléments suivants :

  • Quel est le modèle objet de script ?

  • Débogage et bibliothèque de scripts

  • Activation du débogage des objets de script

  • Signalement des erreurs

  • Traçage des événements

  • Traçage des avertissements

Quel est le modèle objet de script ?

Le modèle objet de script ASP définit un ensemble d'objets contenant les événements, les propriétés et les méthodes que vous pouvez utiliser dans votre application Web. La plupart des objets de script représentent l'interface utilisateur, les éléments tels que les boutons et les zones de texte, et fonctionnent de la même manière que les contrôles dans Microsoft Visual Basic.

Les objets de script dans Microsoft Visual Studio 2005 ne requièrent pas d'exécution particulière ; ils sont définis dans les fichiers de script contenus dans votre page ASP lorsque vous utilisez les objets. Bien que ces fichiers représentent simplement du script, ils encapsulent les commandes ActiveX Data Objects (ADO) et les éléments HTML pour créer des objets sophistiqués qui prennent en charge la programmation commandée par évènement.

Il existe deux versions de chaque objet de script : l'une qui s'exécute sur le serveur dans ASP pour les navigateurs HTML 3.2 génériques, et l'autre qui s'exécute sur le client dans Internet Explorer 4.0 et les versions ultérieures. Le modèle de programmation (événements, méthodes et propriétés) est identique pour les deux versions. Les objets de script peuvent être créés et utilisés directement à partir du code, ou avec l'aide des contrôles DTC. Lorsque la page ASP est enregistrée, le code des objets de script est rendu persistant sous la forme d'une combinaison de code HTML et de script standard.

Débogage et bibliothèque de scripts

Étant donné que les objets de script sont eux-mêmes écrits dans le script, le débogage des scripts que vous écrivez qui interagissent avec le modèle objet de script peut s'avérer compliqué, pour les raisons suivantes :

  • Tout d'abord, lorsque vous utilisez le débogueur pour parcourir votre propre script, vous pouvez finir par effectuer un pas à pas détaillé dans le code inconnu et sophistiqué de la bibliothèque de scripts.

  • Ensuite, si une erreur se produit dans la bibliothèque de scripts, il peut être fastidieux de parcourir la bibliothèque pour détecter l'erreur.

  • Enfin, il est parfois difficile de suivre la séquence d'événements et le flux de contrôle entre votre script et le modèle objet de script.

Vous pouvez maintenant déboguer votre application dans ces circonstances à l'aide des options de débogage de modèle objet de script suivantes :

  • Catch low-level errors (Intercepter les erreurs de bas niveau) - Si un objet de script, par exemple un jeu d'enregistrements, rencontre une erreur, il peut vous alerter à l'aide de messages d'erreur détaillés. Cette option vous aide à détecter les erreurs à l'aide de composants qui peuvent échouer pour des raisons externes.

  • Trace events (Tracer les événements) - La page affiche la liste des événements déclenchés à mesure qu'ils se produisent. Cette option vous aide à déterminer à quel moment vos scripts sont exécutés par rapport aux événements de modèle objet de script.

  • Trace warnings (Tracer les avertissements) - Des messages d'avertissement s'affichent qui indiquent les erreurs éventuelles qui se produisent normalement en mode silencieux. Cette option vous aide à détecter les problèmes, par exemple ceux provoqués par le passage de paramètres non valides à une méthode.

Activation du débogage des objets de script

Une page ASP contient normalement un bloc de scripts dans la partie supérieure avec des options de débogage. Par défaut, les options sont désactivées. Le bloc de scripts se présente comme suit :

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

// Set these to true to enable debugging or tracing

@set @debug=false

@set @trace=false

</SCRIPT>

Le débogage des objets de script requiert l'exécution de JScript 5.0 ou plus sur le serveur. Vous pouvez télécharger la version 5.0 de JScript sur le serveur à partir du site Web Microsoft.

Pour activer le débogage, affectez la valeur true aux options de débogage de votre choix. Par exemple, pour intercepter les erreurs de bas niveau, modifiez le bloc comme suit :

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

Le bloc d'options de débogage doit apparaître immédiatement après la directive @language dans la partie supérieure de la page ASP.

Vous pouvez définir quatre options au total, comme indiqué dans la liste suivante :

Nom

Fonction

@debug

Signale des erreurs sélectionnées dans des objets de script spécifiques.

@trace

Active les deux options de traçage suivantes.

@ trace_events

Active le traçage d'événements.

@ trace_warnings

Active les avertissements pour les erreurs éventuelles qui se produisent normalement en mode silencieux.

Des détails sur les paramètres individuels sont contenus dans les sections suivantes de cette rubrique.

Remarque :

Si vous affectez la valeur true à @trace, il substitue les paramètres de @trace_events et @trace_warnings. Toutefois, si @trace a la valeur false, vous pouvez activer et désactiver individuellement chaque option de traçage.

Les options de traçage individuelles ne faisant pas partie du bloc de script par défaut dans la page ASP, vous devez les ajouter pour les définir individuellement. Par exemple, le script suivant active uniquement le traçage d'événements en laissant les avertissements désactivés :

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

@set @debug = false

@set @trace = false

@set @trace\_events = true

</SCRIPT>

Si vous utilisez Microsoft Internet Explorer 4.x, la définition des options @trace substitue la balise BODY, qui peut désactiver la liaison d'événements dans la balise BODY, et provoque la non-prise en compte des attributs. Ce problème ne se produit pas si vous utilisez Internet Explorer 5.0 ou plus.

Le style de liaison d'événements suivant ne fonctionne pas dans Internet Explorer 4.0 :

<BODY onload="initialize()">

Pour contourner cette limitation, utilisez un autre mécanisme de liaison. Si vous utilisez Visual Basic, Scripting Edition (VBScript), vous pouvez utiliser la liaison implicite :

<SCRIPT LANGUAGE="VBScript">

Function window_onload()

initialize()

End Function

</SCRIPT>

Si vous utilisez JScript, vous pouvez appeler un script global qui assigne un pointeur fonction à un événement d'objet fenêtre, comme suit :

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

Si la balise BODY contient actuellement des attributs, vous devez les définir dans le script au lieu de définir les propriétés de l'objet document. Par exemple, si la balise BODY contient actuellement l'attribut BGCOLOR="#FFFF00", vous pouvez le définir à l'aide du script ci-après. Utilisez la technique mentionnée ci-dessus pour appeler ce script lorsque le document se charge pour la première fois.

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

Signalement des erreurs

Certains objets de script interagissent avec d'autres objets présents en dehors de votre page. Par exemple, l'objet Recordset utilise ADO pour accéder aux bases de données. Si des erreurs se produisent pendant ces interactions, les informations sur les erreurs signalées par l'objet externe peuvent être ambiguës ou paraître incomplètes dans le contexte de votre page.

L'option @debug active un mécanisme de création de rapport qui intercepte et interprète un jeu commun de ces types d'erreurs. Les informations sur les erreurs sont écrites dans la page ASP et apparaissent avec le contenu normal de la page. Dans certains cas, le message d'erreur sous-jacent apparaît également.

Par exemple, si l'option @debug a la valeur true, et si l'objet Recordset essaie d'exécuter une instruction SQL non valide, le script suivant s'affiche dans votre page :

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).

Traçage des événements

Lorsqu'une page ASP utilise le modèle objet de script, les objets de script individuels déclenchent des événements en réponse aux modifications d'état (par exemple, Recordset1_ondatasetcomplete) ou en réponse aux actions de l'utilisateur (par exemple, Button1_onclick). En général, vous devez déterminer à quel moment vos propres scripts s'exécutent par rapport aux événements déclenchés par le modèle objet de script.

Pour ce faire, activez le traçage d'événements en affectant la valeur true à l'option@trace ou @trace\_events. Lorsque vous activez le traçage d'événements, les informations sur l'événement sont écrites dans la page ASP lorsqu'il se produit. Par exemple, une partie d'une page ASP peut se présenter comme suit :

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.

Pour déterminer à quel moment votre script est exécuté, incluez des instructions Response.Write aux points importants, comme illustré dans le script suivant. L'exemple définit un paramètre pour un jeu d'enregistrements en fonction des informations contenues dans une zone de texte. Chaque étape est rapportée en l'affichant sur la page.

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

En utilisant des commandes de compilation conditionnelle JScript, vous pouvez spécifier que vos instructions Response.Write apparaissent dans la page uniquement si vous définissez des options de débogage. Par exemple, l'instruction Response.Write dans le bloc suivant est exécutée uniquement si l'option @trace a la valeur true :

@if (@trace)

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

@end

Vous n'êtes pas limité à utiliser les options de débogage ; vous pouvez également créer vos propres indicateurs de condition, comme dans l'exemple suivant :

@set @trace\_custom = true

' ... other script here

@if (@trace_custom)

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

@end

Remarque :

Avant d'insérer vos pages dans la production, pensez à affecter la valeur false aux conditions de débogage.

Pour plus d'informations sur la compilation conditionnelle, consultez les commandes @if et @set dans la section Instructions du site Web de Microsoft Script.

Traçage des avertissements

Pour rendre les objets de script aussi fiables que possible et limiter l'affichage d'informations non désirées sur une page ASP, les objets de script ne signalent pas généralement les erreurs récupérables. Par exemple, si vous passez une valeur non valide à la méthode d'un objet de script, et si la valeur ne provoque pas l'échec complet de l'objet, ce dernier continue à s'exécuter fréquemment sans message d'erreur. Toutefois, lorsque vous développez votre application, vous souhaitez généralement savoir si l'objet de script a rencontré un problème éventuel. Les problèmes non signalés peuvent parfois entraîner par la suite d'autres problèmes pendant l'exécution de la page, ce qui complique le débogage de votre page.

La solution consiste à tracer les avertissements en affectant la valeur true à l'option @trace ou @trace\_warnings. Si un objet de script rencontre un problème éventuel, il écrit des informations sur la page dans le format suivant :

WARNING TRACE:

FILE: recordset.asp

FUNCTION: Recordset1.open()

DESCRIPTION: Recordset is already open.

Voir aussi

Tâches

Comment : activer le débogage de script dans Internet Explorer

Concepts

Fonctionnement du traitement de script ASP

Autres ressources

Débogage d'applications ASP