我使用了pepper-25中引入的新的MessageLoop类,这样我就可以运行一个后台线程,阻塞文件IO的ppapi调用。到目前为止,我一直在visual studio中使用标志--single-process和--register-pepper-plugins运行chrome,这样我就可以在visual studio中调试我的插件了。
使用这些标志,我发现对PPB_MESSAGING_INTERFACE的PPB_GetInterface get_browser的调用返回null,并且经过一些搜索,我找到了这个issue,它指出您必须使用标志--ppapi-out-of-process运行才能获得MessageLoop支持。
添加了这个标志后,get_browser确实返回了一个有效的接口指针,但是我不能再用visual studio ide调试我的插件,因为它不能附加到运行我的插件的子进程。有没有办法告诉它附加到我的插件进程,或者从支持MessageLoop的单个进程运行的方法
谢谢,詹姆斯
发布于 2013-01-18 06:16:51
要使Visual Studio自动附加到子进程,您可以使用Can Visual Studio be made to debug child processes like WinDBG?中描述的解决方法。
另一种方法是在启动Chrome时使用标志--no-sandbox和--ppapi-startup-dialog。这将导致在创建插件进程时出现一个带有进程id的消息框。然后,可以使用Debug -> Attach to process...将Visual Studio调试器连接到该进程。->领料流程标识。当然,你可以在没有Chrome标志的情况下附加到进程,而且它不是自动的,所以如果你有多个进程同时运行,这真的只是让你确定你附加到了正确的进程。
第三种方法是使用微软提供的免费调试器WinDbg。与Visual Studio中的内置调试器相比,它很复杂,而且用户友好性差得多,但它确实具有自动附加到子进程的能力。可从http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx下载。
至于MessageLoop,进程内插件将不支持它。正如您链接到的问题所提到的,开发人员应该转移到进程外,即使它增加了在没有解决方法的情况下无法自动附加Visual Studio调试器的不便。
https://stackoverflow.com/questions/14370954
复制相似问题