此问题已报告给 Google:https ://issuetracker.google.com/issues/152948662
问题的简短描述
在 Rhino 运行时,如果用户按下工具栏上的“调试”按钮,脚本调试器 (script.google.com) 将在任何包含错误(已处理或未处理)的行处中断。(如果用户按下“运行”按钮,它不会中断)。监视窗口将被激活,用户可以检查发生错误时有效的变量。
在 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 下,我可以在任何地方调用它,调试器会在那里为我停止。但这只是一个旁注。