Windows下如何调试NPAPI Plugins

清泛原创
一、如何查看Plugins是否加载成功
Firefox和Chrome在浏览器地址栏输入 about:plugins,会出现已加载的插件列表。Safari在菜单栏“帮助->已安装插件”查看已经加载的插件。

二、如何有效地打断点
这里假设NPAPI Plugins已经加载成功,将浏览器进程(如iexplore.exe)附加到VS进行调试,调试->附加到进程(英文:Debug->attach to process),然后从进程列表中选择想要调试的进程,这样vs调试器便可停在预先打断点的地方。

IE:IE的插件开发采用的是Active X或ATL,这里不作详解,具体请查阅本站“开发”栏目下相关博文。
Firefox:Firefox的plugin不是运行在Firefox.exe这个进程上的,而是新开了一个plugin-container.exe进程来管理和加载plugin,调试的时候必须attach到plugin-container.exe进程。(官方解释是为了防止插件的崩溃导致整个浏览器进程的崩溃)
Chrome:Chrome是一个多进程的浏览器,那我们该attach到那个进程呢?一般我们只能一个个试了,命中断点则attach成功,否则断点处会有一个感叹号是断不到的。
Safari:Safari的断点方法和Firefox类似,只不过它的plugin宿主唤作一个叫WebKit2ebProcess.exe进程,我们attach到这个进程上就OK了。

三、插件没有加载成功,怎么办?
我们在np_entry.cpp的NP_Initialize()函数第一行,加入调试输出对话框
MessageBoxA(NULL, "打断点", "断点", MB_OK);
当浏览器弹出这个对话框,说明插件运行到这里,然后使用第二节的办法,给它打断点一步一步调试,总会找到加载失败的原因的。

调试过程中遇到任何问题,都可以在论坛“浏览器插件”板块发帖讨论。

Windows NPAPI Plugins

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部