Debugging 在GoogleApps脚本中,使用新的V8运行时断点的工作方式是否不同?

Debugging 在GoogleApps脚本中,使用新的V8运行时断点的工作方式是否不同?,debugging,google-apps-script,v8,google-apps-script-editor,google-apps-script-runtime,Debugging,Google Apps Script,V8,Google Apps Script Editor,Google Apps Script Runtime,使用旧的运行时,我可以在代码中的任何位置设置断点。使用新的v8运行时断点显然必须在我从调试器运行的函数中 这是故意的行为吗?我是在调试器中还是在代码中做错了什么?也许它的结构不正确吗 最简单的例子: var test1 = 1; var test2 = 2; var test3 = 3; function myFunction() { var test4 = 4; var test5 = 5; } V8运行时: 我可以在var test4=4上设置断点,然后使用调试器并选择myFun

使用旧的运行时,我可以在代码中的任何位置设置断点。使用新的v8运行时断点显然必须在我从调试器运行的函数中

这是故意的行为吗?我是在调试器中还是在代码中做错了什么?也许它的结构不正确吗

最简单的例子:

var test1 = 1;
var test2 = 2;
var test3 = 3;

function myFunction() {
  var test4 = 4;
  var test5 = 5;
}
V8运行时:

我可以在
var test4=4
上设置断点,然后使用调试器并选择
myFunction
,代码在该行中断

但是如果我在
var test2=2
上设置断点,然后使用调试器,选择
myFunction
,它不会中断(旧运行时会中断)。

这是与V8运行时相关的新行为
  • 一方面

    来自:

在调试模式下运行时,脚本在遇到断点时暂停, 您在脚本中突出显示了哪一行

如果您的断点位于函数外部-在从未调用过的行中-您的断点将永远不会被命中

  • 另一方面
其他人也注意到,这种行为与以前不同,也不同于谷歌的公共问题跟踪器上的行为

虽然谷歌调查了之前或当前的行为,但作为一种解决办法,这是有意的:

如果希望调试器在
var test2=2行停止
myFunction()
之外,您需要以不同的方式构造代码,例如:


我以前从未注意到这种行为。我猜是因为我不太使用全局变量。但我不认为你做错了什么。但老实说,我不知道这是故意的还是疏忽。你可以把它作为一个问题发布,看看他们怎么说。但是这里的另一位reqular志愿者可能会知道。哇,这是近来罕见的现象-一个有趣的问题:)同意Cooper的观点-你没有做错任何事(除了使用全局变量)。V8引擎和调试器之间几乎没有什么关系,例如,Node.js运行时使用新引擎,如果与VSCode使用的调试器配合使用,您的示例将很好地完成。我倾向于认为这是一种疏忽(此外,变量赋值是一行被执行的代码-为什么它不应该被检查?@OlegValter…我同意现在这种情况很少见:)