1

我正在使用Pepper-25中引入的新 MessageLoop 类,因此我可以运行一个后台线程来阻止对文件 IO 的 ppapi 调用。到目前为止,我一直在使用带有标志的 Visual Studio 运行 chrome --single-process--register-pepper-plugins因此我可以从 Visual Studio 中调试我的插件。

使用这些标志,我发现对PPB_GetInterface get_browserfor的调用PPB_MESSAGING_INTERFACE返回 null,经过一番搜索后,我发现了这个问题,指出您必须使用标志运行--ppapi-out-of-process才能获得MessageLoop支持。

添加该标志后,get_browser确实返回了一个有效的接口指针,但我无法再使用 Visual Studio IDE 调试我的插件,因为它无法附加到运行我的插件的子进程。有没有办法告诉它附加到我的插件进程或从支持的单个进程运行的方式MessageLoop

谢谢,詹姆斯

4

1 回答 1

2

要让 Visual Studio 自动附加到子进程,您可以使用可以使用Visual Studio 中描述的解决方法来调试 WinDBG 等子进程吗?.

另一种方法是在启动 Chrome 时--no-sandbox使用标志。--ppapi-startup-dialog这将导致在创建插件进程时出现一个带有进程 ID 的消息框。然后,您可以使用 Debug -> Attach to process... -> pick process id 将 Visual Studio 调试器连接到该进程。当然,您可以在没有 Chrome 标志的情况下附加到该进程,并且它不是自动的,因此如果您同时运行多个进程,这实际上只是让您确定您附加到了正确的进程。

第三种方法是使用 Microsoft 提供的免费调试器 WinDbg。它比 Visual Studio 中的内置调试器复杂且用户友好性低得多,但它确实能够自动附加到子进程。可从http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx下载。

至于 MessageLoop,进程内插件将不支持它。正如您提到的问题所提到的,开发人员应该转向进程外,即使它增加了无法在没有解决方法的情况下自动附加 Visual Studio 调试器的不便。

于 2013-01-17T22:16:51.363 回答