【问题标题】:Is it possible to blackbox all VM scripts in chrome debugger?是否可以在 chrome 调试器中对所有 VM 脚本进行黑盒化?
【发布时间】:2015-07-06 00:35:33
【问题描述】:

我正在尝试在我的 Angular 应用程序中调试一个相当复杂的模块。我在特定方法的开始处设置了一个断点,希望我可以按照它来查看它在哪里给我一个错误。但是,它不断将我带入 VM 脚本(VM28337、VM30559 等)。我可以假设这些都可以正常工作,所以我没有兴趣看到它们。

我知道我可以在 chrome 调试器中将某些脚本黑箱化,但这些 VM 脚本的数量似乎无穷无尽。有人对如何规避这些脚本有任何建议吗?

【问题讨论】:

  • VM 脚本是由 ajax 请求动态提取的代码,因此它们没有用文件名标记。我也在寻找一种方法来做到这一点。 VM* 不工作...
  • 这也不起作用:^VM/\b\d{5}\b/g
  • 感谢您告诉我。我正要进入正则表达式兔子洞。
  • 运气好吗?我一直在寻找解决方案。通常您可以右键单击脚本并将其黑箱化,但这些类型的脚本没有菜单。
  • 据我所知,没有办法做到这一点。作为黑盒功能的一部分,这将是一个很好的选择。我建议在 crbug.com 上为它制作一张票

标签: angularjs debugging google-chrome-devtools


【解决方案1】:

目前这在任何版本的 Chrome 中似乎都不可能。但是,我创建了一个 Chromium 错误来请求添加它:Chromium Issue 526239

【讨论】:

【解决方案2】:

仅在开发时的解决方法是在您的页面中覆盖 eval -

(function ()
 {
  var originalEval = eval;
  eval =
   function (script)
   {
    return originalEval(script + "\n//# sourceURL=blackbox-this.js");
   }
 }());

然后是黑盒^.*blackbox-this.js$

setInterval/setTimeout 在获取字符串时也是如此(但这无论如何都是不好的做法,对吧?;))

这对你有用吗?

【讨论】:

  • 究竟如何?我没有成功跟随。我如何使用它来使 DevTools 停止调试 VM###?
  • @Mike - 这需要是页面上的第一个脚本(并且假设生成这些 VM### 的代码使用 eval,否则,您需要覆盖其他方式,例如 @ 987654327@, Function 如果可能的话和朋友们)。
  • 这至少不适用于 angularjs 应用程序,仍然有一些 VM 没有注入的 sourceURL。它还应该检查该脚本中是否已经存在 sourceURL,以便开发人员可以控制要显示的内容。
  • @Z.Khullah - 我猜他们正在使用其他方法来评估代码,那么。喜欢new Function(...) 或注入<script>code</script>
猜你喜欢
  • 2015-01-18
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2012-05-04
相关资源
最近更新 更多