5

--js-flags="--stack-trace-limit <value>"在 Chrome 中,您可以通过在运行时设置标志(使用)或通过控制台(使用)来增加堆栈跟踪深度Error.stackTraceLimit,此处解释:https ://code.google.com/p/v8/wiki/JavaScriptStackTraceApi

据我了解,这在 Firebug 中也是可能的,尽管我对该工具的复杂性不太熟悉。

IE11中是否对此有任何规定?我正在处理一个特定于 IE 的问题,堆栈跟踪并没有揭示超出我的库代码 (AngularJS) 的任何信息。增加堆栈跟踪深度可能会对我有所帮助。

谢谢!

4

2 回答 2

6

似乎没有记录的命令行选项可以提供这种控制。但是,您可以像其他流行浏览器一样增加 Internet Explorer 中的堆栈跟踪:

Error.stackTraceLimit = 20; // The default is 10

Internet Explorer 从版本 10 开始在 Error 构造函数上支持此属性。它在之前的版本中不起作用。2012 年,IEBlog 展示了该属性的一些示例用法,以及Error.stack.

似乎没有任何方法可以为所有页​​面请求保留此设置。我在这里建议的唯一选择是设置一个代理,将其添加到所有服务器响应中。当然,我会为此鼓励Fiddler

与其他浏览器一样,Internet Explorer 11 支持console.trace. 因此,您无需等待错误即可获取堆栈跟踪。您可以随时任意调用它。

最后一个要查看的功能是profilingconsole.profile如果您希望仅捕获应用程序生命周期的特定部分,您可以通过和console.profileEnd(两者都是相当标准的)控制分析会话。

于 2013-12-27T22:15:17.793 回答
2

我通过简单地在控制台中玩耍找到了答案——我知道有一个Error对象。事实证明,ErrorIE11 中的对象支持与stackTraceLimitChrome 和 Firebug 相同的属性(我猜他们最终对其进行了标准化)。这可以在控制台中设置,类似于谷歌浏览器(示例Error.stackTraceLimit = 30:),它会从您设置它的时间一直持续到下一个导航事件 - 后退、前进、其他任何地方或刷新页面。

stackTraceLimit 的默认值为 10。

我需要在页面加载时设置它以调试错误,因此我能够设置早期断点并手动设置Error.stackTraceLimit. 我还没有找到一种方法来让它在导航中持续存在,而且我不知道是否有启动标志或任何东西可以以更永久的方式设置它。(我假设某处有一个注册表项。)

我希望这可以帮助遇到此问题的其他人。值得注意的是,新的 IE11 工具会自动完成本机对象的属性,这实际上相当不错,因此您可以快速查看该Error对象还有哪些其他属性和方法。(这实际上是我找到有问题的财产的方式。)

于 2013-12-27T22:59:48.603 回答