Chromium Chronicle n°7: source de prétraitement

Épisode 7:par Bruce Dawson à Seattle, Washington (octobre 2019)
Épisodes précédents

Il est parfois utile de compiler manuellement un seul fichier source Chromium, peut-être pour tester les options d'optimisation du compilateur, pour le prétraiter à un seul fichier pour comprendre des détails subtils d'une macro ou pour réduire le bug du compilateur.

Quelques astuces permettent aux développeurs Chromium de trouver et d'exécuter la commande compile un fichier source particulier, en apportant des modifications si nécessaire.

Pour commencer, accédez à votre répertoire de sortie et utilisez "autoninja" (ou "ninja") pour compilez le fichier qui vous intéresse (et ses dépendances) en utilisant le suffixe ^. Ce suffixe indique à ninja de créer la sortie du file—version.o spécifié dans ce cas. Appuyez ensuite sur le fichier et compilez-le à nouveau (et seulement ce fichier) avec l'indicateur -v (verbose) pour ninja:

Sous Linux ou OSX:

autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^

Dans l'interface système cmd Windows, ^ est un caractère spécial qui doit être échappé:

C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^

Le résultat typique de la commande autoninja -v se présente comme suit : coupée):

..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...

Cette commande vous permet de compiler le fichier qui vous intéresse. Pour obtenir l'état prétraité , procédez comme suit:

Sous Linux ou OSX, supprimez le bloc -o obj/base/base/version.o à la fin, et ajoutez -E. Cela indique au compilateur d'imprimer le fichier prétraité stdout.

Redirigez la sortie vers un fichier, comme ceci:

../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i

Sous Windows, supprimez l'option /showIncludes depuis le début (elle affiche une ligne de sortie pour chaque #include) puis ajoutez /P afin de prétraiter le fichier au lieu de le compiler. Les résultats seront enregistrés répertoire actuel dans version.i:

..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P

Vous pouvez maintenant examiner le fichier prétraité pour voir ce que font réellement les macros. ou apporter des modifications expérimentales au compilateur et à recompiler pour voir ce qui se passe.

Autres ressources

  • Fast Chrome Builds (Versions rapides de Chrome) : pour plus de conseils d'optimisation de compilation (axé sur Windows).
  • ETW: Découvrez comment détecter les problèmes de performances Windows dans Chrome. ou dans la compilation, en lisant la documentation ETW (également appelée Xperf).