在 Google Apps 脚本中,使用新的 V8 运行时时断点的工作方式会有所不同吗?

In Google Apps Script do breakpoints work differently when using the new V8 runtime?

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

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

最小示例:

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

function myFunction() {
  var test4 = 4;
  var test5 = 5;
}

V8 运行时间:

我可以在 var test4 = 4 上设置一个断点,然后使用调试器和 select myFunction,代码会在那一行中断。

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

这是与 V8 运行时相关的新行为

When run in debug mode a script pauses when it hits a breakpoint, which is a line you've highlighted in your script

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

  • 另一边

其他人也注意到这种行为与之前和 filed it 在 Google 的 Public 问题跟踪器

虽然 Google 调查之前或当前的行为是预期的行为,但作为解决方法:

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