c++ - 使用 --ppapi-out-of-process 标志时,visual studio 调试器是否仍可用于调试 ppapi 受信任的插件?

标签 c++ visual-studio visual-studio-debugging google-nativeclient

我正在使用 pepper-25 中引入的新 MessageLoop 类所以我可以运行一个后台线程来阻止文件 IO 的 ppapi 调用。到目前为止,我一直在使用标志 --single-process--register-pepper-plugins 从 visual studio 运行 chrome,这样我就可以在 visual 中调试我的插件工作室。

使用这些标志,我发现对 PPB_MESSAGING_INTERFACEPPB_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/

相关文章:

c++ - "Too many include files"错误 C1014

.net - “步入”突然在 Visual Studio 中不起作用

c++ - 改进极小极大算法

c++ - 与 omp 并行

c - 尝试存储值然后使用 -1 打印结果,但程序自行关闭

c# - 从引用中删除版本号(避免 "Could not load file or assembly..."错误)?

c# - 为什么 Visual Studio 无法在这个简单的 C# 属性上设置条件断点?

c# - MVC 项目在打开 Chrome Pane 后立即停止调试

c++ - 具有 C 链接的函数能够返回类类型?

c++ - 从有符号到无符号问题的类型转换