首页 > 解决方案 > 在 Google Apps 脚本中,使用新的 V8 运行时时断点的工作方式是否有所不同?

问题描述

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

这是预期的行为吗?我在调试器或我的代码中做错了吗?也许它的结构不正确?

最小的例子:

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,然后使用调试器,选择myFunction,它不会中断(它会与旧运行时一起使用)。

标签: debugginggoogle-apps-scriptv8google-apps-script-editorgoogle-apps-script-runtime

解决方案


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

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

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

  • 另一方面

其他人也注意到这种行为与以前不同,并将其归档在 Google 的 Public Issue Tracker 上

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

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

在此处输入图像描述


推荐阅读