Отладка с помощью Response.Write в классическом ASP

Я пытаюсь отлаживать некоторый код с помощью Response.Write, но когда я запускаю код, он пропускает этот оператор и ошибки в какой-то момент далее в коде.

Как я могу заставить свои операторы Response.Write показывать без появления других ошибок?

Ответ 1

Я довольно часто использую Response.End, когда мне нужно увидеть статус в определенном месте на странице.

Ответ 2

Мы используем Visual Studio 2008 для отладки классических страниц asp. Вы можете подключиться к процессу IIS и "перейти" на страницу. Это очень мило. Вот шаги:

  • Получить последний из классического ASP из исходного управления.

  • Установите IIS (если он еще не установлен). FYI... Я использую IIS 5.1.

  • Создайте виртуальный каталог с именем "classicDebug", указывающий на ваш локальный каталог (C:\Websites\ClassicWebSite).

  • Просмотрите свойства виртуального каталога, вкладку "Виртуальный каталог".

  • Установите флажок "Доступ к источнику" Script.

  • Кнопка конфигурации, вкладка "Параметры" - проверьте все.

  • Вкладка "Отладка" - проверьте все.

    7а. На вкладке ASP.NET выберите 2.x

  • Загрузите (не запускайте или отлаживайте или F5) веб-сайт в VS.NET 2008.

  • Отредактируйте свой global.asa соответственно (источники данных и пути).

  • Найдите страницу .asp, которую вы хотите "пройти", и установите точку перерыва в верхней части (или где-нибудь).

  • Откройте IE и перейдите на страницу.

  • Вернитесь к VS.NET и выберите Debug → Attach to Process

  • Проверьте "показать процессы от всех пользователей" и выберите процесс. Для меня (IIS 5.1) имя процесса - dllhost.exe, запущенное с учетной записью IWAM_COMPUTERNAME w/type "Script, T-SQL, Managed, x86".

  • Посетите свою страницу с помощью IE... VS.NET должен сломаться.

Ответ 3

Прокомментируйте строку, которая дает ошибку, и посмотрите, что отображает respnse.write - единственное, что разумно.

Не используйте on error resume next, пока вы разрабатываете свои страницы. Вы должны убедиться, что правильно строите свои страницы и что вы производите правильный код. Вы не увидите никаких ошибок, если используете on error resume next.

on error resume next следует использовать, на мой взгляд, только в действиях базы данных и в доставленном (нерасширяющемся) коде. В этом случае вы должны использовать

if Err.Number <> 0 then 

для проверки любых ошибок. Вы просто не можете сделать это после каждой строки в asp, если вы положили оператор on error resume next в начало вашего кода, но это, безусловно, влияет на код обработки базы данных.

Ответ 4

Вам нужно будет использовать инструкцию "on error resume next" поверх страницы ASP. Это решит вашу проблему при возникновении ошибки, она переместится на следующую строку, а не на ошибку.

Вы можете проверить эту ссылку http://www.powerasp.com/content/new/on-error-resume-next.asp для справки.

Счастливое кодирование

Ответ 5

Попробуйте Response.Flush после ваших отладочных записей или установите Response.Buffer - false.

Ответ 6

Это может помочь в качестве альтернативы response.write.

Я собрал этот класс ASP include, который работает с Firebug + FirePHP. Он позволяет регистрировать значения (включая строки, многомерные массивы и даже объекты, созданные с помощью json.asp), в консоль firebug и просматривать ASP, созданные в объектах коллекции, которые могут помочь (особенно с Ajax, где вы не можете выводить данные отладки без отключение ответа json.) Ajax script Время загрузки и ошибки автоматически регистрируются для быстрого просмотра.

https://github.com/dmeagor/ClassicASP-FirePHP

Просто включите файл и используйте журнал (somevalue) для отправки форматированных переменных в консоль firebug.

Выпущено по лицензии MIT с открытым исходным кодом

Ответ 7

Говоря об альтернативных вариантах, из сообщения Дэвида Мегора, вы также можете записывать трассировки в файл. Вот пример того, как писать в файлы: http://www.4guysfromrolla.com/webtech/040699-1.shtml

Если вы хотите, вы можете даже поместить подпрограммы trace в файл include и использовать его на всех ваших страницах, когда вам это нужно.

Другое решение, которое мы используем, заключается в том, чтобы поместить методы трассировки в сборку .Net, зарегистрировать его как COM, а затем вызвать его с помощью CreateObject.

Эти параметры позволят вам сохранить ваши трассы в файле, который вы можете просмотреть позже, и поделиться с другими разработчиками.

Я лично использую сочетание этих подходов: просматриваю файлы журналов, использую точки останова и даже время от времени помещаю Response.Write.

Еще одна вещь: активировать и просматривать журналы IIS: они часто расскажут вам, в какой строке разбилась ваша страница. Вы можете прочитать здесь, как включить или отключить журналы для классического ASP: https://technet.microsoft.com/en-us/library/hh831387.aspx.