2008-11-19 52 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