Як я можу налагоджувати свій код JavaScript? [зачинено]


113

Коли я виявляю, що у мене є проблематичний фрагмент коду, як я повинен зайнятися його налагодженням?

Відповіді:


78

Firebug - один з найпопулярніших інструментів для цієї мети.


8
Пов’язати це: getfirebug.com
Annika Backstrom

7
Мені подобається firebug, але я б не стверджував, що це голова і плечі над інспектором веб-сайту.
Райан Флоренція

2
Firebug випереджав час, коли він з'явився, але я не думаю, що він є найкращим інструментом, враховуючи інші інструменти, які з’явилися нещодавно.
Джеймс

Я використовую Firebug з моменту відкриття, і це мені дуже допомагає! console.debug, профілер, інспектор ...
Julio Greff

@NinaScholz Тепер усі браузери за замовчуванням постачають реактивні пакети!
oneCoderToRuleThemВсі

74

Усі сучасні браузери оснащені певною формою вбудованого додатка для налагодження JavaScript. Детальна інформація про них буде висвітлена на веб-сторінках відповідних технологій. Мої особисті переваги для налагодження JavaScript - це Firebug у Firefox. Я не кажу, що Firebug кращий за будь-який інший; це залежить від ваших особистих уподобань, і ви, ймовірно, все-таки повинні перевірити свій сайт у всіх браузерах (мій особистий перший вибір - це завжди Firebug).

Нижче я розповім про деякі рішення високого рівня, використовуючи Firebug як приклад :

Firefox

Firefox оснащений власним вбудованим інструментом налагодження JavaScript, але я рекомендую вам встановити додаток Firebug . Це надає кілька додаткових функцій на основі зручної базової версії. Я збираюся тут говорити лише про Firebug.

Після встановлення Firebug ви можете отримати доступ до неї, як показано нижче:

По-перше, якщо ви клацніть правою кнопкою миші на будь-якому елементі, ви можете перевірити елемент за допомогою Firebug :

Огляньте елемент у Firebug

Натиснувши на це, відкриється панель Firebug у нижній частині браузера:

Панель Firebug

Firebug надає кілька функцій, але те, що нас цікавить, це вкладка сценарію. При натисканні на вкладку сценарій відкриється це вікно:

Вкладка сценарію

Очевидно, для налагодження потрібно натиснути перезавантажити :

JavaScript на вкладці sctipt

Тепер ви можете додати точки перерви , натиснувши рядок ліворуч від фрагмента коду JavaScript, до якого потрібно додати точку перерви:

Додавання точок прориву

Коли ваша точка розриву буде досягнута, вона буде виглядати приблизно так:

Точка зламу потрапила

Ви також можете додавати змінні годинника і, як правило, робити все, що ви очікували, в сучасному інструменті налагодження.

Дивіться змінні

Для отримання додаткової інформації про різні варіанти, пропоновані в Firebug, ознайомтеся з поширеними питаннями Firebug .

Хром

У Chrome також є своя вбудована опція налагодження JavaScript, яка працює дуже подібним чином, клацання правою кнопкою миші, перевірка елемента тощо . Погляньте на Інструменти для розробників Chrome . Я зазвичай знаходжу сліди стека в Chrome краще, ніж Firebug.

Internet Explorer

Якщо ви розробляєте в .NET і використовуєте Visual Studio за допомогою середовища веб-розробки, ви можете налагоджувати код JavaScript безпосередньо, розміщуючи точки прориву тощо. Ваш код JavaScript виглядає точно так само, як якщо б ви налагоджували код C # або VB.NET .

Якщо у вас цього немає, Internet Explorer також надає всі наведені вище інструменти. Прикро, замість того, щоб правою кнопкою миші перевірити елементи елементів Chrome або Firefox, ви отримуєте доступ до інструментів розробника, натискаючи F12 . Це питання охоплює більшість питань.


... Напевно, це було в буфері для копіювання-вставки, готовому до роботи, правда? :)
Крістіан Тернус


3
Вибачте, я зовсім пропустив, що про це і відповів той самий чоловік! Я думав, що у вас є якась налагодження Javascript Copypasta, яку ви вводите щоразу, коли хтось задає це питання.
Крістіан Терн

54
  • Internet Explorer 8 (Інструменти для розробників - F12). Все інше - це другий тариф на землі Internet Explorer
  • Firefox та Firebug . Натисніть F12для відображення.
  • Safari (Показати рядок меню, Налаштування -> Додатково -> Показати Розвиток рядка меню)
  • Консоль JavaScript Google Chrome ( F12або ( Ctrl+ Shift+ J)). Переважно той самий браузер, що і Safari, але Safari - краще IMHO.
  • Opera ( Інструменти -> Додатково -> Інструменти для розробників )

+1 налагоджувач Opera js дає краще повідомлення про помилку, ніж усі інші
Габріель Соломон

3
Хоча в 2009 році Safari, можливо, вимкнув інструменти для розробників Chromes у 2014 році, я б зайнявся налагодженням у Chrome через Safari в будь-який день тижня. Інструменти для розробників Chrome та Firebug Firefox є найвищим рівнем ... і хоча незручно користуватися інструментами для розробників IE11, можливо, на третьому місці ( IMHO )
scunliffe

29

Для налагодження коду JavaScript існує ключове слово налагодження в JavaScript. Поставити налагоджувач; фрагмент у вашому коді JavaScript. Він автоматично почне налагоджувати код JavaScript у цій точці.

Наприклад:

Припустимо, це ваш файл test.js

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();
  • Коли браузер запускає веб-сторінку в опції розробника з увімкненим налагоджувачем, він автоматично починає налагодження з налагоджувача; бал.
  • Там має бути відкрито вікно розробника браузера.

На Safari це іноді працює, а іноді ні. Я впевнений, що це якась річ у моєму кінці. FWIW Я ввімкнув автоматичний показ веб-інспектора для JSContexts.
1,21 гігаватта

21

Я використовую старий хороший printfпідхід (старовинна техніка, яка буде добре працювати в будь-який час).

Подивіться на магію %o:

console.log("this is %o, event is %o, host is %s", this, e, location.host);

%oдамп, доступний для друку, вміст об'єкта JS з можливістю глибокого перегляду . %sпоказували просто для запису.

І це:

console.log("%s", new Error().stack);

дає вам схожий на Ява стек стека до точки new Error()виклику (включаючи шлях до файлу та номер рядка !!).

Як %oі new Error().stackдоступні в Chrome і Firefox.

За допомогою таких потужних інструментів ви робите припущення, що в вашому JS відбувається не так, ставите вихід налагодження (не забудьте обговорити ifзаяву, щоб зменшити кількість даних) і перевірити своє припущення. Виправте проблему або зробіть нове припущення або поставте більше налагодженого виводу для бітової проблеми.

Також для слідів стека використовуйте:

console.trace();

як кажуть консолі

Щасливий злом!


2
+1 для console.trace (); Відмінна відповідь від решти.
Саурабх Патіль

12

Почніть з Firebug та IE Debugger.

Будьте обережні з налагоджувачами в JavaScript. Час від часу вони впливатимуть на навколишнє середовище просто так, щоб викликати деякі помилки, які ви намагаєтеся налагодити.

Приклади:

Для Internet Explorer це, як правило, поступове уповільнення та є деяким видом витоку пам'яті. Через півтори години мені потрібно перезапустити. Здається, це досить регулярно.

Для Firebug, мабуть, минуло більше року, тож, можливо, це була і старша версія. Як результат, я не пам’ятаю конкретики, але в основному код працював неправильно, і після спроби налагодити його на деякий час я відключив Firebug і код працював нормально.


9

Хоча alert(msg);працює за тими сценаріями "я просто хочу дізнатися, що відбувається" ... кожен розробник стикався з тим випадком, коли опинишся у (дуже великому чи нескінченному) циклі, з якого не можеш вирватися.

Я б рекомендував під час розробки, якщо вам потрібна дуже налагоджена опція налагодження, скористайтеся параметром налагодження, який дозволяє вам вибухнути. (PS Opera, Safari? І Chrome? Всі вони доступні у своїх рідних діалогах)

//global flag
_debug = true;
function debug(msg){
  if(_debug){
    if(!confirm(msg + '\n\nPress Cancel to stop debugging.')){
      _debug = false;
    }
  }
}

З урахуванням вищесказаного ви можете потрапити у великий цикл налагодження спливаючих вікон, де натискання Enter/ Okдозволяє переходити через кожне повідомлення, але натискання Escape/ Cancelдозволяє вирватись добре.


6

Я використовую меню / консоль для розробників WebKit (Safari 4). Він майже ідентичний Firebug.

console.log()це новий чорний - набагато краще, ніж alert().


2
Якщо ви поставите console.log у всьому коді, не забудьте видалити їх, оскільки він порушить IE.
Ліам

5

Мій перший крок - це завжди перевірити HTML і перевірити синтаксис з JSLint . Якщо у вас є чиста розмітка та дійсний код JavaScript, настав час Firebug або інший налагоджувач.


@Ken Посилання розірвано :(
Thirisangu Ramanathan

@Thirisangu Дякую! Посилання зафіксовано
Кен

3

У Visual Studio 2008 є дуже хороші інструменти налагодження JavaScript. Ви можете опустити точку перерви в коді JavaScript свого клієнта і перейти через неї, використовуючи ті самі інструменти, що і код коду сервера. Не потрібно приєднуватися до процесу чи робити щось складне, щоб його активувати.


3

Я використовую кілька інструментів: Fiddler , Firebug та Visual Studio. Я чую, що в Internet Explorer 8 є вбудований налагоджувач.


Під "Fiddler" ви маєте на увазі веб-відладчик Fiddler?
Томас Л Холадей

3

Раніше я користувався Firebug , поки не вийшов Internet Explorer 8. Я не є великим шанувальником Internet Explorer, але, провівши деякий час із вбудованими інструментами для розробників, до яких входить дійсно приємний налагоджувач, видаватися безглуздо використовувати щось інше. Я маю накинути капелюх на Microsoft, вони зробили фантастичну роботу над цим інструментом.


2
Для базової налагодження налагоджувач IE8 відповідав більшості моїх потреб. Однак якщо ви робите будь-яке тестування продуктивності, ви швидко виявите відсутність IE. Нещодавно у мене був проект, який використовував важкий javascript, і нам дійсно потрібно було обрізати речі для нижчих систем, оскільки ми стикалися з жахливою "невідповідальною помилкою сценарію". Firebug в цьому випадку був неоціненним, тому що я зміг запустити метод console.profile (), щоб зрозуміти, де витрачався весь мій час.
Гавін

1
Відладчик IE8 також має функцію профілю (хоч і не настільки графічна, як FireBug), яка забезпечує дерево викликів, кількість викликів та час, витрачений на кожен метод. Я знайшов це адекватним, щоб виділити, який код JS займає занадто довго.
Джеймс

3

Ви також можете перевірити YUI Logger . Все, що вам потрібно зробити, - це включити пару тегів у ваш HTML. Це корисне доповнення до Firebug, яке є більш-менш необхідним.


Чи не має jQuery подібний функціонал?
шапр

2

Я знайшов нову версію Internet Explorer 8 (натисніть F12) дуже добре для налагодження коду JavaScript.

Звичайно, Firebug добре, якщо ви використовуєте Firefox.


2

Крім використання налагоджувача JavaScript Visual Studio, я написав власну просту панель, яку я включаю до сторінки. Це просто як негайне вікно Visual Studio. Я можу змінити значення своїх змінних, викликати свої функції та побачити значення змінних. Він просто оцінює код, написаний у текстовому полі.



2

На додаток до Firebug та розширень для розробників, що належать до браузера, JetBrains WebStorm IDE поставляється з підтримкою віддаленої налагодження для Firefox та Chrome (необхідне розширення).

Також підтримує:

Можливість перевірити це безкоштовно: пробна версія 30 або використання версії раннього доступу .


2

Якщо ви використовуєте Visual Studio , просто поставте debugger;вище коду, який ви хочете налагодити. Під час виконання контроль на цьому місці буде призупинено, і ви можете налагоджувати крок за кроком звідти далі.


1

Як і у більшості відповідей, це насправді залежить: чого ви намагаєтеся досягти за допомогою налагодження? Основна розробка, виправлення проблем продуктивності? Для базового розвитку всі попередні відповіді більш ніж адекватні.

Для тестування продуктивності я рекомендую Firebug Можливість визначити, які методи є найдорожчими за часом, була неоціненною для ряду проектів, над якими я працював. Оскільки бібліотеки на стороні клієнта стають все більш надійними, і в цілому більше відповідальності покладається на сторону клієнта, такий тип налагодження та профілювання стане лише кориснішим.

API консолі Firebug: http://getfirebug.com/console.html


0

НатискаючиF12 веб-розробники, можна швидко налагодити JavaScript-код, не виходячи з браузера. Він вбудований у кожну інсталяцію Windows.

В Internet Explorer 11 , F12 інструменти надає засоби налагодження , такі як точки зупину, годинник і локальний перегляд змінного і консоль для повідомлень і негайного виконання коду.


дивіться за цим посиланням: w3schools.com/js/js_debugging.asp також
Реза
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.