Как Firebug работает внутри? - PullRequest
10 голосов
/ 21 июля 2010

Я отлаживал с помощью JavaScript более ста раз, используя Firebug, не беспокоясь о том, что там происходит. Я хочу знать, как именно Firebug обрабатывает отладку JavaScript / DOM.

Скажем, я установил точку останова для некоторого оператора внутри метода и начал отладку. Я хочу знать, что там происходит?

Ответы [ 2 ]

8 голосов
/ 10 августа 2010

Когда вы нажимаете на строку, чтобы установить точку останова, Firebug записывает URL-адрес файла и номер строки на случай, если вы перезагрузите страницу. Затем он ищет URL / строку в своих внутренних структурах данных, чтобы решить, какую функцию Javascript (называемую «скрипт» в Mozilla) вы хотите использовать для точки останова. Затем он вызывает функцию платформы Mozilla для сопоставления номера строки с программным счетчиком относительно начала функции. Наконец, он вызывает платформу для установки точки останова на счетчике программы.

Назад, когда вы активировали панель «Сценарий», Firebug зарегистрировал обратные вызовы на платформе. Один из них, onBreak, обрабатывает точки останова. Поскольку платформа выполняет код JS, она проверяет свои внутренние структуры, чтобы увидеть, установлена ​​ли текущая программа счетчик точки останова. Если это так, он останавливает выполнение JS и перезванивает firebug.

Затем Firebug просматривает точку останова, чтобы решить, является ли она условной точкой останова, содержит ли она правильные данные для поддержки пользовательского интерфейса отладчика в этой точке останова и т. Д. Если условия в порядке, он сообщает платформе приостановить отладку, выполнение Javascript для веб-страницы и события платформы для веб-страницы. Затем он показывает исходный файл для точки останова и выделяет строку. Если условия не очень хорошие, это просто продолжается.

Сложные детали появляются, когда платформа не поддерживает правильный номер строки для сопоставления счетчика программы. Например, Firebug имеет много кода для работы с eval () и обработчиками событий, сгенерированными браузером.

На мой взгляд, подобные вопросы лучше в группе новостей Firebug.

2 голосов
/ 10 августа 2010

Firebug использует jsdIDebuggerService , который является службой отладчика.

Эта страница содержит информацию о внутренностях firebug , а также ссылку на исходный код.Он не точно определяет все детали, но должен служить отправной точкой.

...