Episódio 7:por Bruce Dawson em Seattle, WA (outubro de 2019)
Episódios anteriores
Às vezes, é útil compilar um único arquivo de origem do Chromium manualmente, como testar as opções de otimização do compilador, pré-processá-lo em um único arquivo para entender alguns detalhes sutis de macro ou minimizar um bug do compilador.
Alguns truques permitem que um desenvolvedor do Chromium encontre e execute o comando que compila um arquivo de origem específico, com modificações conforme necessário.
Comece acessando o diretório de saída e usando o autoninja (ou ninja) para
compilar o arquivo de interesse (e qualquer dependência) usando o sufixo ^
.
Esse sufixo diz ao ninja para criar a saída do file—version.o
especificado
nesse caso. Em seguida, toque no arquivo e compile-o (e somente ele) novamente com
a sinalização -v
(detalhado) para o ninja:
No Linux ou OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
No shell de cmd do Windows, ^
é um caractere especial e precisa de escape:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
A saída típica do comando autoninja -v
é semelhante a esta (com
corte significativo):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Esse comando permite compilar o arquivo desejado. Para receber a saída pré-processada, use as seguintes etapas:
No Linux ou OSX, remova o bloco -o obj/base/base/version.o
do final
e adicione -E
. Isso instrui o compilador a imprimir o arquivo pré-processado em
stdout.
Redirecione a saída para um arquivo, desta forma:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
No Windows, remova a opção /showIncludes
do início (ela exibe uma linha de saída para cada #include
) e, em seguida, adicione /P
para pré-processar o arquivo em vez de compilá-lo. Os resultados serão salvos no
diretório atual em version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
Agora você pode examinar o arquivo pré-processado para ver o que as macros estão realmente fazendo ou fazer alterações experimentais de switch do compilador e recompilar para ver o que acontece.
Outros recursos
- Builds rápidos do Chrome: para mais dicas de otimização das versões (focadas no Windows).
- ETW: descubra como encontrar problemas de desempenho do Windows (no Chrome ou no build) lendo os documentos do ETW (também conhecido como Xperf).