23
Chrome Developer Tools для вскрытия черных ящиков Роман Сальников

#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

  • Upload
    jsib

  • View
    101

  • Download
    3

Embed Size (px)

Citation preview

Page 1: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Chrome Developer Toolsдля вскрытия черных ящиков

Роман Сальников

Page 2: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Трудности• Кода много

• Людей много

• Уследить невозможно

• Нужно постоянно изучать

1

Page 3: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Уровни понимания• Трассы исполнения

• Сценарии использования

• Бизнес-логика

2

Page 4: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Трассы

исполнения

Page 5: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Если на пальцах

4

Page 6: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Поймать результат• Pause on exceptions

• debugger;

• XHR breakpoint

• DOM breakpoint

5

Page 7: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Показать картинку

6

Page 8: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Если на пальцах

7

Page 9: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Поймать событие• Event listeners

• $0 + getEventListeners() + debug()

8

Page 10: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Если на пальцах

9

Page 11: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Если на пальцах

10

Page 12: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Трассы исполнения• Умные брэйкпоинты

• Async полезно, но не всегда

• Blackbox для сторонних библиотек

11

Page 13: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Сценарии

использования

Page 14: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Timeline• Изначально - запись событий браузера

• Потом стал профайлером

• Потом научился отдавать стэки (переход к коду)

• Можно использовать для обзора архитектуры

13

Page 15: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Высчитать корни третьей степени

1999993 125.99195799852664

1999994 125.9919789972563

1999995 125.99199999597896

1999996 125.99202099469463

1999997 125.99204199340329

1999998 125.99206299210495

1999999 125.99208399079961

14

Page 16: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Timeline• Именуйте функции

• Ставьте метки

• Анализируйте по-маленьку

15

Page 17: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Бизнес-логика

Page 18: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

console на ключевых моментах• .log()

• .group()

• .info()

• .warn()

• .timeStamp()

17

Page 19: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

var watchMe = {};

Object.observe(watchMe, function(options) {

options.forEach(function(option) {

var groupName = option.name + ' changed';

console.groupCollapsed(groupName);

console.log('Old value: ', option.oldValue);

console.log('New value: ', option.object[option.name]);

console.groupEnd(groupName);

});

});

01.

02.

03.

04.

05.

06.

07.

08.

09.

10.

18

Page 20: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Собственные инструменты

19

Page 21: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

DevTools Extensions API• Панель, специфичная для приложения

• Интеграция со стандартными инструментами

• Теоритически, можно все, но...

• Не самая очевидная дока

• Не самая удобная отладка

20

Page 22: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Итого• Уровень кода: умные брэйкпоинты и async callstack

• Уровень архитектуры и рантайма: timeline

• Уровень бизнес-логики: логи и крафтовые инструменты

21

Page 23: #9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников

Chrome Developer Toolsдля вскрытия черных ящиков

Роман Сальников

[email protected]

@bardty