A collection of resources for learning about Chromium and tracking its development
See also V8 Development
It is possible to debug Chromium with Electron by passing
--build_debug_libcc
to the bootstrap script:
$ ./script/bootstrap.py -d --build_debug_libcc
This will download and build libchromiumcontent locally, similarly to the
--build_release_libcc
, but it will create a shared library build of
libchromiumcontent and won't strip any symbols, making it ideal for debugging.
When built like this, you can make changes to files in
vendor/libchromiumcontent/src
and rebuild quickly with:
$ ./script/build.py -c D --libcc
When developing on linux with gdb, it is recommended to add a gdb index to speed up loading symbols. This doesn't need to be executed on every build, but it is recommended to do it at least once to index most shared libraries:
$ ./vendor/libchromiumcontent/src/build/gdb-add-index ./out/D/electron
Building libchromiumcontent requires a powerful machine and takes a long time (though incremental rebuilding the shared library component is fast). With an 8-core/16-thread Ryzen 1700 CPU clocked at 3ghz, fast SSD and 32GB of RAM, it should take about 40 minutes. It is not recommended to build with less than 16GB of RAM.
depot_tools
has an undocumented option that allows the developer to set a
global cache for all git objects of Chromium + dependencies. This option uses
git clone --shared
to save bandwidth/space on multiple clones of the same
repositories.
On electron/libchromiumcontent, this option is exposed through the
LIBCHROMIUMCONTENT_GIT_CACHE
environment variable. If you intend to have
several libchromiumcontent build trees on the same machine(to work on different
branches for example), it is recommended to set the variable to speed up the
download of Chromium source. For example:
$ mkdir ~/.chromium-git-cache
$ LIBCHROMIUMCONTENT_GIT_CACHE=~/.chromium-git-cache ./script/bootstrap.py -d --build_debug_libcc
If the bootstrap script is interrupted while using the git cache, it will leave
the cache locked. To remove the lock, delete the files ending in .lock
:
$ find ~/.chromium-git-cache/ -type f -name '*.lock' -delete
It is possible to share this directory with other machines by exporting it as SMB share on linux, but only one process/machine can be using the cache at a time. The locks created by git-cache script will try to prevent this, but it may not work perfectly in a network.
On Windows, SMBv2 has a directory cache that will cause problems with the git cache script, so it is necessary to disable it by setting the registry key
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters\DirectoryCacheLifetime
to 0. More information: https://stackoverflow.com/a/9935126