• [原创]嵌入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. 没有了

  • 相关阅读:
    Elementary Methods in Number Theory Exercise 1.2.25
    Elementary Methods in Number Theory Exercise 1.2.14
    图解欧几里德算法
    图解欧几里德算法
    Elementary Methods in Number Theory Exercise 1.2.14
    Android中的长度单位详解(dp、sp、px、in、pt、mm)
    分享下多年积累的对JAVA程序员成长之路的总结
    android异常之都是deamon惹的祸The connection to adb is down, and a severe error has occured.
    TomatoCartv1.1.8.2部署时报错
    JavaScript浏览器对象之二Document对象
  • 原文地址:https://www.cnblogs.com/igaoshang/p/CEF.html
Copyright © 2020-2023  润新知