2008-11-19 57 views
1

从我所了解的情况来看,Google Chrome可以运行使用NPAPI编写的浏览器插件。Firefox插件在Chrome中崩溃

我已经写了一个在Firefox中完成它的工作很好的工作,但是一旦将它嵌入到页面中,就会导致Chrome崩溃并烧毁。我甚至不必调用我的任何方法,嵌入足以导致崩溃。

如何调试?我试图将调试器附加到chrome中,但是我得到的堆栈痕迹深入Chrome本身,就像我说的,没有“我的”实际代码正在运行,但据说只是NPAPI init代码。

我会欣赏一些指针。

回答

2

事实证明,我使用的旧NPAPI插件示例的部分初始化代码导致了崩溃。我很抱歉地说我已经解决了这个问题,并且似乎无法找到我在版本控制历史中修复它的具体修改。无论如何,我的问题是固定的,并且是由于我愚蠢而盲目地信任示例代码造成的。

2

Chrome是开源的......你有没有尝试下载源代码并构建它?这样,您至少可以将IDE指向源代码树,并在崩溃时自动附加它,这可以为您提供关于发生的事情的更多信息。

这当然不会解决您的错误,但它可以帮助您向Chrome团队报告一个错误。正如你所知道的,插件API对于Chrome来说是相当新颖的,并且错误可能是他们的,而不是你自己的。

4

Chromium dev文档描述了将Visual Studio附加到Chrome进程的一些技巧:Chromium Developer Documentation > Debugging Chromium

,你可能会在Chrome的NPAPI插件会面临一些问题:

  • 你的插件将在Chrome UI一个单独的进程中运行。 (你可能已经知道了:)
  • 如果你的插件的多个实例被加载(在相同的HTML页面或不同的Chrome标签中),你的插件实例一起运行在同一个进程中。如果你有全局变量,你的插件实例可能会彼此跺脚。
  • Chrome使用DEP(数据执行保护),但Firefox不支持。如果您使用ATL或其他JITted代码技巧,DEP可能会导致您的插件崩溃。
+0

Firefox 3以上使用DEP – taxilian 2009-12-24 22:37:11