zoukankan      html  css  js  c++  java
  • [原创]嵌入CEF遇到的问题及解决方案

    这几天程序嵌入谷歌浏览器,各种坑,不容易,记录之。。。希望到此为止

    1. 开了多进程模式之后,渲染进程RenderProcess断点没有进入。

      只有在单进程模式(CefSingleProcess为true)下调试,渲染进程的断点才会进入。如果开多进程模式,那么渲染进程是在另外一个进程,不是主进程,当前调试进程是主进程,所以就没法进入渲染进程的断点,但是实际上,渲染进程的RenderProcessHandler的方法还是会被触发的。

    2. 在渲染进程操作浏览器进程没有效果。

      渲染进程(RenderProcess)和浏览器进程(BrowserProcess)之间的通讯必须通过进程间通讯才可以,直接调用是没有效果的。不管是在多进程模式下还是在单进程模式下。

    3. 多进程模式下进程间通讯传接口地址失败。

      多进程模式下,进程不在同一个地址空间,不能直接传地址,只能传值类型。

    4. 在多进程模式下,有的情况会出现子进程无法退出的问题。

      修改CefShutDown的时机,不要在finalization里面做,而是移到程序退出前,在释放了所有的Browser后就直接调用退出操作。

    5. 快速打开很多页面时整个程序会卡死。

      猜测是GPU合成的问题,关闭后就没有这个现象了。GPU也会新开一个进程的,关闭GPU就会减少一些进程创建。

    6. 每开一个Tab都会创建一个进程。

      参考下面的说明,根据需求开启不同的进程模型。

      1. Process-per-site-instance:就是你打开一个网站,然后从这个网站链开的一系列网站都属于一个进程。这是Chrome的默认模式。
      2. Process-per-site:同域名范畴的网站放在一个进程,比如www.google.com和www.google.com/bookmarks就属于一个域名内(google有自己的判定机制),不论有没有互相打开的关系,都算作是一个进程中。用命令行--process-per-site开启。
      3. Process-per-tab:这个简单,一个tab一个process,不论各个tab的站点有无联系,就和宣传的那样。用--process-per-tab开启。
      4. Single Process:这个很熟悉了吧,传统浏览器的模式,没有多进程只有多线程,用--single-process开启。

    7. 没有了

  • 相关阅读:
    深度css: 层级树及zindex属性
    点“九”切图教程分享
    简析 iOS 程序图标的设计
    网站打开时Waiting(TTFP)时间反应很久的问题解决
    CentOS最小化安装网卡ens33没有IP地址问题解决
    怎么使用XShell远程连接服务器?
    Linux发行版时间线分支图最新版
    pstree命令找不到解决方法
    解决网站出现Error Establishing Database Connection问题
    图片地址
  • 原文地址:https://www.cnblogs.com/igaoshang/p/CEF.html
Copyright © 2011-2022 走看看