Об этой проблеме сообщили в Google: https://issuetracker.google.com/issues/152948662
Краткое описание проблемы
Во время выполнения Rhino Отладчик скрипта (script.google.com) будет прерываться на любую строку, содержащую ошибку (обработана или нет), если пользователь нажимает кнопку «отладка» на панели инструментов. (Он не сломается, если пользователь нажмет кнопку «Выполнить»). Часы windows будут активированы, и пользователь сможет проверить действующие переменные на момент возникновения ошибки.
Во время выполнения V8 отладчик сценария не прекратит работу ни при каких обстоятельствах. Это очень неудобно для отладки.
Небольшой пример кода, который надежно воспроизводит проблему
Образец должен работать как есть или с минимальной настройкой, без внешние зависимости
function testError() {
var a = {
title: function() { console.log('hello world') }
}
a.titel(); // rhino would break here because of this (unintentional) typo; V8 will not.
}
Какие шаги будут воспроизвести проблему?
Создать новый проект
Вставьте код в Code.gs
Отладьте код
Каков ожидаемый результат? Что ты видишь вместо этого? Если вы видите сообщения об ошибках, предоставьте их.
Ожидается: отладчик прерывается на линии с asdfgh()
Факт: отладчик завершает отладку
Сообщения: отладчик (очень) кратко показывает ошибку как тост и регистрирует необработанную ошибку в журналах и выполнениях.
Пожалуйста, предоставьте любую дополнительную информацию ниже:
Примечание : не важно для этой ошибки. Просто дополнительная информация к вашему сведению. Не позволяйте этому отвлекать вас или сбивать вас с толку
Если эту ошибку можно исправить, я могу использовать свою доморощенную функцию, которая эффективно позволяет мне иметь «точки останова» в любом месте кода, таким образом, обходя Еще одна ошибка в отладчике GAS (точки останова попадают только в текущий файл):
Break(condition, watch) {
try {
if(!App.Objects.isUndefined(condition) && !condition)
return false;
// you have to step over until you leave Break(). Run doesn't work from here.
thisFuncDoesntExist();
} catch (e) {
return true;
}
}
Под Rhino я мог бы вызвать это где угодно, и отладчик остановился бы там для меня. Но это только примечание.