gpt4 book ai didi

firebug - 使用 Firefox/Firebug,为什么您只能获取带有一些错误的 Stacktraces

转载 作者:行者123 更新时间:2023-12-04 21:22:18 27 4
gpt4 key购买 nike

我注意到对于 Firefox/Firebug(我的主要开发环境),一些错误会产生堆栈跟踪,而另一些则不会。起初我认为这与我是否生成了错误(例如 new Error("foo"))或 Javascript 是否生成了它(例如 undefinedFoo += 1)有关,但我注意到这两种类型都发生了的错误。

所以,我的问题是,有人知道这是什么原因吗?它是随机的还是有一些模式/逻辑?只是 Firefox 和/或 Firebug 蹩脚还是其他浏览器也这样做?最重要的是,我能做些什么来控制它(特别是让它总是给我堆栈跟踪)?

这不是一个关键问题(因为我总是可以在发生错误的任何行之前抛出一个“console.trace()”),但我很好奇是否有人知道答案。

**********编辑**********

我找到了这个线程:
http://groups.google.com/group/firebug/browse_thread/thread/1f32df8b96ec1d30/64b9074cb99056c2?pli=1
其中提到如果错误不是错误的实例,Firefox 不会为 Firebug 提供堆栈跟踪。换句话说,如果你抛出一些不是 new Error("foo") 的东西,你将不会得到堆栈跟踪。

但是,这对我没有帮助,因为即使我抛出新的 Error(),我也没有看到堆栈跟踪。

最佳答案

我找到了!事实证明,模块模式是问题所在。这是一个简单的例子:

var OuterModule = (function(module){
module.throwError = function() {
throw new Error("This has no stack trace!");
};
return module;
})({});
OuterModule.throwError();

由于某种原因,由于模块模式将 throwError 函数隐藏在模块范围内,Firebug/Firefox 无法正确跟踪它。

永远也想明白的人;希望其他人会从我的痛苦中受益:-)

关于firebug - 使用 Firefox/Firebug,为什么您只能获取带有一些错误的 Stacktraces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com