1

据我所知,Google Chrome 可以运行使用NPAPI编写的浏览器插件。

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

我该如何调试?我尝试将调试器附加到 chrome,但我得到的堆栈跟踪在 Chrome 本身的深处,就像我说的,没有“我的”实际代码正在运行,但应该只是 NPAPI 初始化代码。

我会很感激一些指示。

4

3 回答 3

4

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

在 Chrome 中使用 NPAPI 插件可能会遇到一些问题:

  • 您的插件将在与 Chrome UI 不同的进程中运行。(你可能已经知道了:)
  • 如果加载了插件的多个实例(在同一个 HTML 页面或不同的 Chrome 选项卡中),您的插件实例在同一个进程中一起运行。如果您有全局变量,则您的插件实例可能会相互影响。
  • Chrome 使用 DEP(数据执行保护),但 Firefox 没有。如果您使用 ATL 或其他 JITted 代码技巧,DEP 可能会使您的插件崩溃。
于 2009-02-03T18:17:36.400 回答
2

Chrome 是开源的……您是否尝试过下载源代码并构建它?这样,您至少可以将您的 IDE 指向源代码树并让它在崩溃时自动附加,这可以为您提供更多关于发生了什么的信息。

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

于 2009-02-02T20:06:50.473 回答
2

事实证明,我使用的旧 NPAPI 插件示例中的部分初始化代码导致了崩溃。很抱歉,我很久以前就解决了这个问题,但似乎无法在版本控制历史记录中找到我为修复它所做的具体修改。无论如何,我的问题已经解决,是由于我愚蠢和盲目相信示例代码造成的。

于 2009-02-04T09:13:08.573 回答