ASP - Отладка сценариев ASP
Независимо от уровня подготовки разработчика при создании программ в них встречаются ошибки, мешающие правильной работе серверных сценариев. Поэтому отладка (процесс поиска и устранения ошибок сценариев) является обязательным и важным этапом разработки надежных приложений ASP, особенно если предполагается дальнейшее развитие приложения.
Средство отладки сценариев Microsoft Script Debugger
Средство отладки сценариев Microsoft® Script Debugger является мощным средством отладки, служащим для быстрого поиска ошибок и интерактивной проверки серверных сценариев. Отладчик сценариев, также работающий с обозревателем Internet Explorer версии 3.0 или более поздней, позволяет:
- запускать серверные сценарии в построчном режиме выполнения;
- открывать окно команд для отслеживания значений переменных, свойств и элементов массивов в ходе выполнения серверных сценариев;
- приостанавливать выполнение серверных сценариев (используя отладчик или команду сценария) на определенной строке сценария;
- трассировать процедуры при выполнении серверного сценария.
Примечание. В отладчике можно просматривать сценарии и находить ошибки, но нельзя редактировать сценарии. Для исправления ошибок необходимо устранить их в редакторе сценариев, сохранить внесенные изменения и снова запустить сценарий.
Включение отладки
Для возможности отладки серверных сценариев сначала необходимо настроить веб-сервер для поддержки отладки сценариев ASP. Инструкции и сведения содержатся в разделе Включение отладки ASP.
После включения отладки веб-сценариев отладку можно выполнять одним из следующих методов:
- Вручную открыть отладчик сценариев для отладки серверных сценариев ASP.
- Запрашивать файл .asp, используя обозреватель Internet Explorer. Если файл содержит ошибку или специальную инструкцию, прерывающую выполнение, отладчик сценариев автоматически запустит сценарий, выведет его текст и укажет на источник ошибки.
Ошибки сценариев
При отладке серверных сценариев можно встретить ошибки нескольких типов. Некоторые из этих ошибок могут вызвать неправильное выполнение сценариев, остановку выполнения программы или возврат неверных результатов.
Синтаксические ошибки
Синтаксические ошибки обычно являются результатом использования неправильного синтаксиса инструкций сценариев. Например, ошибка возникает, если указано неправильное имя команды или задано неверное число аргументов. Синтаксические ошибки могут быть причиной неработоспособности сценария.
Ошибки времени выполнения
Ошибки времени выполнения возникают после того, как началось выполнение сценария и встретилась инструкция, пытающаяся выполнить невозможные действия. Например, следующий сценарий содержит функцию, выполняющую деление переменной на ноль (недопустимую математическую операцию) и генерирующую ошибку времени выполнения:
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER> Result = Findanswer(15) Document.Write ("Ответ: " &Result) Function Findanswer(x) 'Эта инструкция генерирует ошибку времени выполнения. Findanswer = x/0 End Function </SCRIPT>
Ошибки времени выполнения необходимо исправить, чтобы выполнение сценариев не прерывалось.
Логические ошибки
Логические ошибки обнаружить гораздо сложнее. Сценарий, содержащий логические ошибки, которые обычно бывают вызваны ошибками в тексте программы или упущениями в логике программы, выполняется нормально, но возвращает неверные результаты. Например, серверный сценарий, предназначенный для сортировки списка значений, может выполнять сортировку в неверном порядке, если в строке сравнения значений использован знак > (больше) вместо знака < (меньше).
Приемы отладки
Существуют несколько разных приемов поиска ошибок и проверки приложений.
Своевременная (JIT) отладка
Когда работа серверного сценария прерывается из-за ошибки времени выполнения, отладчик сценариев автоматически запускается, отображает файл .asp с указанием строки, в которой произошла ошибка, и выдает сообщение об ошибке. При таком типе отладки, называемом своевременной (JIT) отладкой, выполнение программы приостанавливается. Перед тем, как возобновление выполнения сценария станет возможным, необходимо исправить ошибки в редакторе сценариев и сохранить внесенные изменения.
Отладка с точками останова
Если возникает ошибка, источник которой не удается обнаружить, бывает полезно воспользоваться точкой останова. Точка останова приостанавливает выполнение сценария на указанной строке. Можно установить одну или несколько разных точек останова перед строкой, в которой происходит ошибка, а затем воспользоваться отладчиком для просмотра значений переменных или свойств, устанавливаемых при выполнении сценария. После исправления ошибки точки останова следует удалить, чтобы выполнение сценария происходило без вмешательства пользователя.
Чтобы установить точку останова, откройте сценарий в редакторе, выделите строку сценария, на которой требуется прервать выполнение, и выберите в меню Debug команду Toggle Breakpoint. Затем повторно запросите сценарий из веб-обозревателя. После выполнения строк сценария до точки останова будет запущен отладчик сценариев, отображающий сценарий и указывающий на строку, в которой установлена точка останова.
Останов на следующей инструкции
В некоторых случаях может потребоваться включение режима отладчика сценариев Break at Next Statement, если следующая выполняемая инструкция находится не в данном файле .asp. Например, если установить режим Break at Next Statement в файле .asp, относящемся к приложению Sales, отладчик будет запускаться при запуске любого файла сценария в приложении Sales или в любом приложении, для которого включена отладка. Поэтому, если включен режим Break at Next Statement, следует знать, что перед выполнением любой следующей инструкции сценария будет запущен отладчик.
Отладка сценариев VBScript с использованием инструкции Stop
В серверные сценарии, написанные на языке VBScript, также можно добавлять точки останова, вставляя инструкцию Stop перед сомнительным фрагментом серверного сценария. Например, следующий серверный сценарий содержит инструкцию Stop, приостанавливающую выполнение сценария перед вызовом специальной функции:
<% intDay = Day(Now()) lngAccount = Request.Form("AccountNumber") dtmExpires = Request.Form("ExpirationDate") strCustomerID = "RETAIL" & intDay & lngAccount & dtmExpires 'Точка останова. Stop 'Вызов компонента регистрации. RegisterUser(strCustomerID) %>
При запросе данного сценария отладчик запускается и автоматически отображает файл .asp с указанием расположения инструкции Stop. В этой точке можно просмотреть значения, назначенные переменным, перед тем, как передать их указанному компоненту.
Важно! Не забудьте удалить инструкции Stop из готовых файлов .asp.
Отладка сценариев JScript с использованием инструкции Debugger
Чтобы добавить точки останова в серверные сценарии, написанные на языке JScript, вставьте инструкцию debugger перед сомнительной строкой или сценарием. Например, следующий сценарий включает инструкцию debugger, прерывающую выполнение и автоматически запускающую отладчик сценариев при каждом присвоении нового значения.
<%@ LANGUAGE=JScript %> <% for (var count = 1; count <= 10; count++) { var eventest = count%2 //Установка точки останова для того, чтобы пользователь мог отслеживать выполнение сценария. debugger if (eventest == 0) Response.Write("Четное значение: " + count + "<br>") } %>
Не забудьте удалить инструкцию debugger из готовых файлов .asp.
Примечание. Не путайте инструкцию debugger с инструкцией JScript break. Инструкция break завершает выполнение текущего цикла, не активизирует отладчик Microsoft Script Debugger и не приостанавливает выполнение.
Советы по отладке сценариев
Помимо отладчика сценариев, несколько хороших советов по отладке могут значительно сократить время, затрачиваемое на обнаружение источников ошибок. Несмотря на то, что большинство ошибок, таких как неправильно написанные команды и пропущенные переменные, можно легко обнаружить, некоторые логические ошибки и ошибки выполнения найти очень и очень сложно.
Дополнительные сведения об отладчике Microsoft Script Debugger см. на веб-узле Microsoft Scripting Technologies по адресу http://msdn.microsoft.com/scripting/.