SlideShare a Scribd company logo
1 of 21
Отладка и профилирование JavaScript/Ajax

                Александр Шуркаев
                  Newmedia Stars
          htmlcoder.visions.ru / alshur@ya.ru
Отладка и профилирование
• Отладка — этап разработки
  компьютерной программы, на котором
  обнаруживают, локализуют и устраняют
  ошибки.
• Профилирование — сбор
  характеристик работы программы.
  Инструмент, используемый для анализа
  работы называют профайлером.
                             ru.wikipedia.org
Отладка JavaScript’а: история
• window.alert() vs. console.log()
• debugger;
  – Изначально только в JScript
  – Теперь в Gecko (Firebug / Venkmen)
• opera.postError();
Console API
• Раньше только в Firebug
• Методы:
  – console.log(object[, object, ...])
  – console.debug(object[, object, ...])
  – console.info(object[, object, ...]) /
    warn / error
  – console.assert(expression[, object, ...])
  – console.dir(object)
  – console.dirxml(node)
  – console.count([title])
  – console.time(name) + console.timeEnd(name)
  – console.profile([title]) +
    console.profileEnd()
Отладка в браузерах
•   Internet Explorer
•   Mozilla/Firefox
•   Opera
•   Safari
Отладка в Internet Explorer
• Microsoft Script Debugger
  – Бесплатен, но требует Windows Genuine
  – Надстройка Companion.JS + DebugBar
• Microsoft Script Editor
  – Вместе с Microsoft Office 2000+
  – Особенность: attach to process
• Visual Studio/Visual Web Developer
  – У VWD нетривиальный процесс отладки
Включение отладки в IE
Companion.JS + DebugBar
Отладка в Mozilla/Firefox

• Firebug! Firebug! Firebug!
  – Console API
  – Надстройка YSlow (включая JSLint)
  – Всё как полагается: watch,
    breakpoints, trace, step into, step out,
    step over и т. д.
• Отладчик Venkman
  – Монструозен
Firebug & YSlow
Отладка в Opera
• JavaScript консоль
  – opera.postError()
  – НЕТ Console API
• Отладчика НЕТ
Консоль в Opera
Отладка в Safari
• JavaScript Debug
  – Mac OS X Terminal window:
    defaults write com.apple.Safari
    IncludeDebugMenu 1
  – Windows /…/Preferences.plist:
    <key>IncludeDebugMenu</key>
    <true/>
  – Из Console API только console.log()
• Отладчик Drosera
  – Nightly builds
Safari Debug
Кросс-браузерные консоли
• Firebug Lite
  – Console API, частично
  – <html debug="true"> или F12
  – firebugx.js убирает ошибки при
    использовании Console API
• Faux Console
  – console.log() теперь везде
• Jash: JavaScript Shell
  – Своя консоль
Универсальный лог
if (window.console && console.log)
  console.log('foobar'); // FF
  (Firebug), Safari (Debug mode), IE
  (Firebug Lite, Faux Console или
  Companion.JS + Microsoft Script
  Debugger)
else if (window.opera &&
  opera.postError)
  opera.postError('foobar'); // Opera
else alert('foobar');
Отладка в IDE
• JavaScript Debugger в Dreamweaver 4
  – В DW MX 2004 убрали :-(
• Visual Studio/Visual Web Developer
  – Привязка к .Net-технологиям
• AJAX Toolkit Framework для Eclipse
Dev, QA и Prod отладка
• Активация в production режима отладки
  и логирования через GET-параметр
  – ?debug=1
  – Запись в cookie
• Глобальная переменная в коде,
  устанавливается на сервере в
  зависимости от окружения
  – var DEBUG = true;
  – <html debug="true">
Профилирование кода
• Firebug! Firebug! Firebug!
  – Время выполнения каждой функции
  – В Firebug Lite профилирования НЕТ
• JsLex
  – Кросс-браузерный, но нетривиальный
Профилирование в Firebug
Спасибо за внимание! Вопросы?

More Related Content

What's hot

Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаAlexandr Mikhaylenko
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиSQALab
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Dakiry
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
Cтандартизация рабочего окружения и автоматизация развертывания рабочей среды
Cтандартизация рабочего окружения и автоматизация развертывания рабочей средыCтандартизация рабочего окружения и автоматизация развертывания рабочей среды
Cтандартизация рабочего окружения и автоматизация развертывания рабочей средыWordCamp Kyiv
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.jsОмские ИТ-субботники
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojoAnton Ukolov
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Egor Konovalov
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?buranLcme
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 

What's hot (20)

Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработка
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
VMware Orchestrator
VMware OrchestratorVMware Orchestrator
VMware Orchestrator
 
Cтандартизация рабочего окружения и автоматизация развертывания рабочей среды
Cтандартизация рабочего окружения и автоматизация развертывания рабочей средыCтандартизация рабочего окружения и автоматизация развертывания рабочей среды
Cтандартизация рабочего окружения и автоматизация развертывания рабочей среды
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojo
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Браузеры
БраузерыБраузеры
Браузеры
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Автоматизация тестирования
Автоматизация тестированияАвтоматизация тестирования
Автоматизация тестирования
 

Similar to Отладка и профилирование JavaScript/Ajax

Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
современная практика статического анализа безопасности кода веб приложений
современная практика статического анализа безопасности кода веб приложенийсовременная практика статического анализа безопасности кода веб приложений
современная практика статического анализа безопасности кода веб приложенийSergey Belov
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновЕкатерина Макарова
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)Ontico
 
Отладка приложений под iOS
Отладка приложений под iOSОтладка приложений под iOS
Отладка приложений под iOSiOS Dev Course
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшнеEugeni Feudorov
 
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014Dmytro Zharii
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
10 вещей, которые «невозможно» сделать в iOS
10 вещей, которые «невозможно» сделать в iOS10 вещей, которые «невозможно» сделать в iOS
10 вещей, которые «невозможно» сделать в iOSAny Void
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 

Similar to Отладка и профилирование JavaScript/Ajax (20)

Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
course js day 1
course js day 1course js day 1
course js day 1
 
современная практика статического анализа безопасности кода веб приложений
современная практика статического анализа безопасности кода веб приложенийсовременная практика статического анализа безопасности кода веб приложений
современная практика статического анализа безопасности кода веб приложений
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
Xe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леоновXe4 launch мобильная разработка всеволод_леонов
Xe4 launch мобильная разработка всеволод_леонов
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
 
Отладка приложений под iOS
Отладка приложений под iOSОтладка приложений под iOS
Отладка приложений под iOS
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшне
 
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
10 вещей, которые «невозможно» сделать в iOS
10 вещей, которые «невозможно» сделать в iOS10 вещей, которые «невозможно» сделать в iOS
10 вещей, которые «невозможно» сделать в iOS
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 

Отладка и профилирование JavaScript/Ajax

  • 1. Отладка и профилирование JavaScript/Ajax Александр Шуркаев Newmedia Stars htmlcoder.visions.ru / alshur@ya.ru
  • 2. Отладка и профилирование • Отладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. • Профилирование — сбор характеристик работы программы. Инструмент, используемый для анализа работы называют профайлером. ru.wikipedia.org
  • 3. Отладка JavaScript’а: история • window.alert() vs. console.log() • debugger; – Изначально только в JScript – Теперь в Gecko (Firebug / Venkmen) • opera.postError();
  • 4. Console API • Раньше только в Firebug • Методы: – console.log(object[, object, ...]) – console.debug(object[, object, ...]) – console.info(object[, object, ...]) / warn / error – console.assert(expression[, object, ...]) – console.dir(object) – console.dirxml(node) – console.count([title]) – console.time(name) + console.timeEnd(name) – console.profile([title]) + console.profileEnd()
  • 5. Отладка в браузерах • Internet Explorer • Mozilla/Firefox • Opera • Safari
  • 6. Отладка в Internet Explorer • Microsoft Script Debugger – Бесплатен, но требует Windows Genuine – Надстройка Companion.JS + DebugBar • Microsoft Script Editor – Вместе с Microsoft Office 2000+ – Особенность: attach to process • Visual Studio/Visual Web Developer – У VWD нетривиальный процесс отладки
  • 9. Отладка в Mozilla/Firefox • Firebug! Firebug! Firebug! – Console API – Надстройка YSlow (включая JSLint) – Всё как полагается: watch, breakpoints, trace, step into, step out, step over и т. д. • Отладчик Venkman – Монструозен
  • 11. Отладка в Opera • JavaScript консоль – opera.postError() – НЕТ Console API • Отладчика НЕТ
  • 13. Отладка в Safari • JavaScript Debug – Mac OS X Terminal window: defaults write com.apple.Safari IncludeDebugMenu 1 – Windows /…/Preferences.plist: <key>IncludeDebugMenu</key> <true/> – Из Console API только console.log() • Отладчик Drosera – Nightly builds
  • 15. Кросс-браузерные консоли • Firebug Lite – Console API, частично – <html debug="true"> или F12 – firebugx.js убирает ошибки при использовании Console API • Faux Console – console.log() теперь везде • Jash: JavaScript Shell – Своя консоль
  • 16. Универсальный лог if (window.console && console.log) console.log('foobar'); // FF (Firebug), Safari (Debug mode), IE (Firebug Lite, Faux Console или Companion.JS + Microsoft Script Debugger) else if (window.opera && opera.postError) opera.postError('foobar'); // Opera else alert('foobar');
  • 17. Отладка в IDE • JavaScript Debugger в Dreamweaver 4 – В DW MX 2004 убрали :-( • Visual Studio/Visual Web Developer – Привязка к .Net-технологиям • AJAX Toolkit Framework для Eclipse
  • 18. Dev, QA и Prod отладка • Активация в production режима отладки и логирования через GET-параметр – ?debug=1 – Запись в cookie • Глобальная переменная в коде, устанавливается на сервере в зависимости от окружения – var DEBUG = true; – <html debug="true">
  • 19. Профилирование кода • Firebug! Firebug! Firebug! – Время выполнения каждой функции – В Firebug Lite профилирования НЕТ • JsLex – Кросс-браузерный, но нетривиальный