Depurar las páginas ASP

Vale, hay que reconocer que los errores que devuelven las páginas ASP (cuando puedes leerlos en pantalla)
no son muy explícitos: ADO Error 800382342494 no sé cuantos, y un mensaje que muchas veces no ayuda nada.
Hay un apunte importante que hacer a la hora de depurar las páginas: ¡Usa Option Explicit! Si escribes:


<%
Option Explicit
%>

al comienzo de tus scripts, estarás forzado a declarar TODAS tus variables.
Esto significa que cualquier variable que no hayas declarado con Dim variable,
te devolverá un error al utilizarla. La utilidad de esto es que evita que cometas errores al
escribir el nombre de la variable. Si escribes el siguiente código:

<%
Dim miedad

' Por ejemplo el usuario mete su edad en un formulario
miedad=Request.Form("Edad")

....

Response.Write(miedaf)
...
%>

y no utilizas Option Explicit, no verás ningún error pero el Response.Write escribirá 0, -1 o vete tú
a saber qué porque la variable miedaf empieza a existir en ese momento.
En cambio, si utilizas Option Explicit, te dará un error diciéndote que la variable miedaf no está
declarada. ¿Util, no?


Otro apunte interesante es intercalar Response.Write's en las partes de código que hagan muchas tareas,
con muchos objetos ADO. Por ejemplo, tenemos un script que abre un fichero, lee el contenido en una
variable y después hace cosas con esa cadena. Si tenemos algún error en todo ese fragmento,
probablemente tendremos uno de "Error en Server.CreateObject", alguno de ADO, la cadena estará vacía...
Es útil por lo tanto poner algo como:
<%
Dim oFSO, oFich, contenido, fichero
...
fichero=Server.MapPath("../fichero.txt")

'Comprobamos si el fichero es el que queremos
Response.Write(fichero)

set oFSO=Server.CreateObject("Scripting.FileSystemObject")
set oFich=oFSO.OpenTextFile(fichero)
contenido=oFich.ReadAll
'Vemos qué tiene el fichero (SI NO ES MUY GRANDE CLARO!)
Response.Write(contenido)

...
%>


Después, cuando ya funciona, comentamos los Response.Write y ya está. De este modo seguimos
fácilmente cómo va ejecutando la página, y veremos qué ha hecho y dónde ha terminado en caso de error.