Ответ 1
Когда вы нажимаете на строку для установки точки останова, Firebug записывает URL-адрес файла и номер строки в случае перезагрузки страницы. Затем он просматривает URL/строку в своих внутренних структурах данных, чтобы решить, какую функцию Javascript (называемую "script" в Mozilla) вы хотите остановить. Затем он вызывает функцию платформы Mozilla для сопоставления номера строки с программным счетчиком относительно начала функции. Наконец, он вызывает платформу для установки точки останова на счетчике программ.
Когда вы активировали панель Script, Firebug зарегистрировал обратные вызовы с платформой. Один из них, onBreak, обрабатывает точки останова. Поскольку платформа запускает JS-код, он проверяет свои внутренние структуры, чтобы увидеть, установлен ли текущий счетчик программ. Если это так, он останавливает выполнение JS и обращается к firebug.
Firebug затем смотрит на точку останова, чтобы решить, является ли это условной точкой останова, если у нее есть правильные данные для поддержки интерфейса отладчика в этой точке останова и т.д. Если условия в порядке, он сообщает платформе о приостановке отладки, выполнении Javascript для веб-страницы и событиях платформы для веб-страницы. Затем он показывает исходный файл для точки останова и выделяет линию. Если условия не являются хорошими, он просто продолжается.
Сложные части появляются, когда платформа не поддерживает правильный номер строки для сопоставления счетчика программ. Например, Firebug имеет множество кодов для обработки обработчиков событий eval() и браузера.
Вопросы, подобные этим, лучше в группе новостей Firebug, на мой взгляд.