最近,我开始花时间和精力去了解 chromium-browser 项目。我的目标是最终能够以开发人员的身份做出贡献,所以我最终开始研究如何获取它并在本地构建它。我在运行它时遇到了一些问题,目前还找不到任何解释。
希望它能帮助其他处于同样境况的人。在论坛上查找了很多内容后,我没有找到类似的东西,想知道这是否是我遗漏了的东西。
我正在尝试在 Windows 10 家庭版上运行 chromium-browser。我当前的配置是 i5-2500k / 8gb DDR3,我的工作区在硬盘上,直到我获得更大的 SSD(建议的规格是 16-32 GB 的 RAM 和 SSD,以使其构建和运行得更好。这会是问题的一部分吗?)。
我当前的 chromium 版本是:版本 54.0.2808.0(64 位)
为了获取和构建项目,我按照有关如何获取代码的说明进行操作。
我所做的是:
- 将 Windows 版本的 depot-tools 提取到我的工作区中
fetch chromium
使用和获取存储库gclient runhooks
- 内置
cd src
、gn gen out/Default
和ninja -C out/Debug
构建过程完成,控制台中没有显示任何错误。但是,当我启动浏览器时,我收到多个似乎与堆栈跟踪相关的错误。这些错误不是模态的,只要我不关闭任何一个,chrome 就会继续响应,页面就会按预期显示,所以这现在没什么大不了的:
但是,如果我进行一些繁重的加载(例如:加载 Facebook 新闻提要),它似乎会挂起并且从此时起响应不佳(例如:无休止的加载,鼠标事件在选项卡内不起作用)。 您也可以通过以下方式在我这边重现此问题:https://www.google.ca然后在页面上的任意位置单击鼠标右键。
为了尝试加快速度,我运行了一个脚本来重命名每个 pdb 文件,这样它们就不会附加到进程中。这大大提高了速度,但仍然有错误。StackTrace 错误变成这样:
至于挂起问题,现在将显示一个空的模态框,提示错误(描述不太清楚是什么错误)。这是模态框,一旦关闭,chrome 就会停止正常工作。鼠标悬停事件不会显示,重新加载时页面将永远无法完成加载。
我知道最新版本有时会不稳定,但我正在努力使它成为一个令人愉快的项目。我在这里做错了什么或我可能错过了一些步骤吗?这里有人解决了类似的问题吗?
非常感谢,任何帮助都将不胜感激!
弗雷德里克
更新 - 2016/07/28:
深入研究代码本身,我发现第一个错误是由于::FreeLibrary (in module_list.cc)
无法正确释放 HMODULE 造成的。抱歉把代码放在这里,如果这能有所帮助,我更愿意把它放在这里。
::UnMapViewOfFile
当前调查:构建一个新版本,当失败时,重新启用该版本,::FreeLibrary
查看是否能通过第一个错误。
对于第二个错误,我仍然不知道发生了什么。将继续调查,希望找到更多潜在的细节。
请随时询问任何有助于解决问题的信息。
更新 2 - 2016/07/28:
我在 StackOverflow 上问了一个不同的、更面向编程的问题,希望它能有所帮助: Chromium-browser 在 module_list.cc 中构建致命错误:检查失败
更新 3 - 2016/07/29
我终于让一些工作正常了!它使用 args.gn 中的这些配置来配置构建:
> gn args out/Default
is_debug = false
enable_nacl = false
symbol_level = 0
remove_webcore_debug_symbols = true
此配置不适用于调试,但拥有一个有效的配置是一大进步。现在超级开心!!我目前的假设是它与调试标志有关。内部函数调用在调试模式下是否难以访问正确的模块名称?
更新 4 - 2016/08/13
在重新进行调试构建后,我注意到构建目录中有几个 Windows Kit 调试器 DLL 未被复制。这次,链接过程失败了api-ms-win-crt-math-l1-1-0.dll
。然后我复制了所有文件,希望它能解决所有问题。第一次运行时,错误没有出现,但当我在 Google 主页上单击鼠标右键时出现了同样的情况(浏览机制悄无声息地中断)。关闭并重新打开后,同样的错误又出现了。
有人有解决这些问题的想法或任何与 Chromium 项目不同的程序吗?
答案1
我想请求你设定你的视窗,环境对于 Visual Studio,并获取编译器工具链正确。请按照以下链接中的步骤操作,并使用最新版本(包括更新)尝试所有操作。请在此处找到链接:Windows 构建说明
供您参考,请在此处找到构建 Chromium 的快照:Chromium 快照
如果这对你有一点帮助,请告诉我。谢谢。