我正在使用 pepper-25 中引入的新 MessageLoop 类所以我可以运行一个后台线程来阻止文件 IO 的 ppapi 调用。到目前为止,我一直在使用标志 --single-process
和 --register-pepper-plugins
从 visual studio 运行 chrome,这样我就可以在 visual 中调试我的插件工作室。
使用这些标志,我发现对 PPB_MESSAGING_INTERFACE
的 PPB_GetInterface
get_browser
的调用返回 null,经过一些搜索我发现了这个 issue其中声明您必须使用标志 --ppapi-out-of-process
运行才能获得 MessageLoop
支持。
添加了该标志后,get_browser
确实返回了一个有效的接口(interface)指针,但我无法再使用 visual studio ide 调试我的插件,因为它无法附加到运行我的插件的子进程。无论如何告诉它附加到我的插件进程或从支持 MessageLoop
的单个进程运行的方式?
谢谢, 詹姆斯
最佳答案
要让 Visual Studio 自动附加到子进程,您可以使用 Can Visual Studio be made to debug child processes like 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 调试器的不便。
关于c++ - 使用 --ppapi-out-of-process 标志时,visual studio 调试器是否仍可用于调试 ppapi 受信任的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14370954/