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).