Episodio 7: de Bruce Dawson en Seattle, WA (octubre de 2019)
Episodios anteriores
A veces, es útil compilar un solo archivo fuente de Chromium de forma manual, para experimentar con las opciones de optimización del compilador y procesarlo previamente en un solo archivo para comprender algunos detalles de macro sutiles o para minimizar error del compilador.
Algunos trucos permitirán que un desarrollador de Chromium encuentre y ejecute el comando que compila un archivo fuente particular, con modificaciones según sea necesario.
Primero, ve al directorio de salida y usa Autoninja (o Ninja) para
Compila el archivo de interés (y cualquier dependencia) con el sufijo ^
.
Este sufijo le indica a Ninja que compile el resultado del file—version.o
especificado.
en este caso. Luego, toca el archivo y compílalo (y solo a él) con
la marca -v
(verbose) a Ninja:
En OSX o Linux:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
En la shell de cmd de Windows, ^
es un carácter especial y debe escaparse:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
El resultado típico del comando autoninja -v
se ve de la siguiente manera (significativamente
cortada):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
Este comando te permite compilar el archivo que te interesa. Para obtener el flujo de trabajo de salida, sigue estos pasos:
En OSX o Linux, quita el bloque -o obj/base/base/version.o
del final.
y agrega -E
. Esto le indica al compilador que imprima el archivo procesado previamente en
stdout.
Redirecciona el resultado a un archivo de la siguiente manera:
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
En Windows, quita la opción /showIncludes
desde el principio (se imprime
una línea de salida para cada #include
) y, luego, agrega /P
para
procesar previamente el archivo en lugar de compilarlo. Los resultados se guardarán en la
directorio actual en version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
Puede examinar el archivo preprocesado para saber qué están haciendo las macros o realizar cambios experimentales en el interruptor del compilador y volver a compilar para ver qué sucede.
Recursos adicionales
- Compilaciones rápidas de Chrome: Obtén más sugerencias de optimización de compilación (se enfoca en Windows).
- ETW: Descubre cómo encontrar problemas de rendimiento de Windows en Chrome o en la compilación; para ello, lee los documentos de ETW (también conocido como Xperf).