2011-06-21 71 views
1

在处理大型Firefox插件时,我有时会意外地发现语法错误,而我的编辑器没有捕获它。当发生这种情况,然后调用如何在调试Firefox扩展时检测语法错误

Components.utils.import("resource://modules/Foo.js") 

只会无法导入或返回任何东西,没有任何一种有用的提示,以在文件中查找语法错误。当我的imports失败时,有什么办法可以让Firefox给我一些线索吗?

编辑:我解决了自己的问题,结果证明我使用的代码对全局引用了navigator对象。什么让这特别烦人的是,代码将在浏览器中加载(如弗拉基米尔下面建议的那样),但在我的扩展中导入时仍会失败。

最终我使用了一种手动二分搜索:我会删除文件的一半,然后看看导入是否仍然失败。如果是这样,那么我会删除剩下的一半并重复。只要它没有失败,我就可以更准确地了解问题出在哪里,这使我可以继续进行二分查找或手动扫描较小的区域来查找问题。

这非常耗费时间,我仍然很感激任何关于如何加快调试过程的建议。

回答

1

这里的问题最有可能是在https://developer.mozilla.org/en/Exception_logging_in_JavaScript上描述的问题,并且设置dom.report_all_js_exceptions优先为true应该有效。我必须承认,我还没有尝试过,因为设置此偏好会使错误控制台非常嘈杂。相反,我使用一种丑陋的黑客方式,并将模块作为脚本加载到本地HTML文件中 - 这足以向我展示语法错误,幸运的是我不需要经常这样做(这只是语法错误的问题,通常会报告运行时错误)。