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