最近,我开始花时间和精力去理解铬浏览器项目。我的目标是最终能够作为开发人员做出贡献,所以我最终想要如何获得它并在本地构建它。我在运行它时遇到一些问题,但还没有找到任何解释。
希望它能帮助处于相同情况的其他人。在论坛上看了很多,我没有找到类似的东西,想知道这是否是我错过的东西。
我正在尝试在Windows 10 Home Edition上运行chrome-browser。我目前的配置是i5-2500k / 8gb DDR3,我的工作区在硬盘上,直到我得到一个更大的SSD(建议的规格建议16-32 GB的RAM和一个SSD,以使其能够更好地构建和运行。可以吗成为问题的一部分?)。
我目前的铬版本是:版本54.0.2808.0(64位)
为了获取和构建项目,我遵循了如何获取代码的说明。
我做的是:
- 将depot-tools的windows版本提取到我的工作区中
- 获取存储库
fetch chromium
和gclient runhooks
- 内置
cd src
,gn gen out/Default
和ninja -C out/Debug
构建过程完成其工作,并且控制台中不会显示任何错误。但是,当我启动浏览器时,我会收到多个似乎与堆栈跟踪相关的错误。这些错误不是模态的,只要我不关闭它们中的任何一个,chrome就会不断响应并且页面会按预期显示,所以现在这没什么大不了的:
但是,如果我做了一些沉重的加载(例如:加载facebook新闻源),它似乎挂起并且从这一点起没有很好的响应(例如:无限加载,鼠标事件在tab中不起作用)。它也可以转载到我的最终 https://www.google.ca 并右键单击页面上的任意位置。
为了尝试加快速度,我运行了一个脚本来重命名每个pdb文件,这样它们就不会附加到进程上。这大大提高了速度,但仍然存在错误。 StackTrace错误变为:
至于悬挂问题,它现在将显示一个空的模态框,表明存在错误(描述对于它是什么并不太好)。这是一个模态,一旦关闭,铬停止按预期工作。发生的事情是鼠标悬停事件没有显示,并且页面在重新加载时永远不会完成加载。
我知道最新版本有时可能会不稳定,但我正在努力使它成为一个令人愉快的项目。我在这里做错了什么或者我可能错过了哪些步骤?这里有人发现类似的问题吗?
非常感谢,非常感谢任何帮助!
弗雷德里克
更新 - 2016/07/28:
深入研究代码本身,我发现第一个错误是由 ::FreeLibrary (in module_list.cc)
无法正确释放HMODULE。很抱歉在这里放置代码,如果这可以帮助我更喜欢在这里。
目前的调查:建立一个新的版本,依靠 ::UnMapViewOfFile
什么时候 ::FreeLibrary
没有看到它是否通过第一次错误。
对于第二个错误,我仍然不知道发生了什么。继续调查,希望找到更多潜在的细节。
请随时询问有助于解决问题的任何信息。
更新2 - 2016/07/28:
我在StackOverflow上问了一个不同的,更多面向编程的问题,如果它可以帮助: 在chrome_list.cc中,Chromium-browser构建致命错误:检查失败
更新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主页上右键单击时(默认情况下浏览机制被破坏)发生了相同的行为。关闭并重新打开后,相同的错误又回来了。
任何人都想知道解决这些问题或任何不同的程序然后铬项目的那些?