Episódio 7:por Bruce Dawson em Seattle, WA (outubro de 2019)
Episódios anteriores
Às vezes, é útil compilar manualmente um único arquivo de origem do Chromium, talvez para testar opções de otimização do compilador e pré-processá-lo a um único arquivo para entender alguns detalhes sutis da macro ou para minimizar uma bug do compilador.
Alguns truques permitirão 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 autoninja (ou ninja) para
compile o arquivo de interesse (e quaisquer dependências) usando o sufixo ^
.
Esse sufixo instrui o ninja a criar a saída do file—version.o
especificado.
nesse caso. A seguir, toque no arquivo e compile-o (e somente-o) novamente com
a flag -v
(detalhado) para ninja:
No Linux ou OSX:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
No shell 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
é assim (significativamente
cortado):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Esse comando permite compilar o arquivo desejado. Para fazer com que o modelo saída, siga estas etapas:
No Linux ou OSX, remova o bloco -o obj/base/base/version.o
do final,
e adicione -E
. Isso diz ao compilador para imprimir o arquivo pré-processado em
stdout.
Redirecione a saída para um arquivo da seguinte forma:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
No Windows, remova a opção /showIncludes
do início (ele imprime
uma linha de saída para cada #include
) e depois adicionar /P
para
pré-processar e compilar o arquivo. 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 é possível 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 de versões com foco 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).