Chromium Chronicle Nr. 7: Quelle für Vorverarbeitung

Folge 7: von Bruce Dawson aus Seattle, Washington (Oktober 2019)
Vorherige Folgen

Manchmal ist es hilfreich, eine einzelne Chromium-Quelldatei manuell zu kompilieren. mit Compiler-Optimierungsoptionen experimentieren, sie vorverarbeiten in eine einzelne Datei verschieben, um kleinere Makro-Details zu verstehen, oder um eine Compiler-Fehler.

Mit einigen Tricks kann ein Chromium-Entwickler den Befehl finden und ausführen, kompiliert eine bestimmte Quelldatei mit Änderungen nach Bedarf.

Gehen Sie zunächst in Ihr Ausgabeverzeichnis und verwenden Sie Autoninja (oder ninja), um Kompilieren Sie die gewünschte Datei und alle Abhängigkeiten mit dem Suffix ^. Dieses Suffix weist Ninja an, die Ausgabe des angegebenen file—version.o zu erstellen in diesem Fall. Berühren Sie dann die Datei und kompilieren Sie sie erneut mit -v (ausführlich) für Ninja:

Unter Linux oder OSX:

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

In der Windows cmd-Shell ist ^ ein Sonderzeichen und muss maskiert werden:

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

Eine typische Ausgabe des Befehls autoninja -v sieht so aus (deutlich geschnitten):

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

Mit diesem Befehl können Sie die gewünschte Datei kompilieren. Um die vorverarbeitete -Ausgabe führen Sie die folgenden Schritte aus:

Unter Linux oder OSX entfernen Sie den -o obj/base/base/version.o-Block am Ende. und füge -E hinzu. Damit wird der Compiler angewiesen, die vorverarbeitete Datei stdout übergeben.

Leiten Sie die Ausgabe wie folgt in eine Datei weiter:

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

Unter Windows entfernen Sie die Option /showIncludes am Anfang (sie wird gedruckt eine Ausgabezeile für jeden #include) und addieren dann /P, um die Datei vorverarbeiten, anstatt sie zu kompilieren. Die Ergebnisse werden im Aktuelles Verzeichnis in version.i:

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

Jetzt können Sie die vorverarbeitete Datei untersuchen, um zu sehen, was die Makros eigentlich tun. oder experimentelle Änderungen am Compiler-Switch vornehmen und eine Neukompilierung durchführen, um zu sehen, was passiert.

Zusätzliche Ressourcen

  • Schnelle Builds in Chrome: Weitere Tipps zur Build-Optimierung (Schwerpunkt auf Windows).
  • ETW: Windows-Leistungsprobleme in Chrome ermitteln oder im Build, indem Sie die ETW-Dokumente (auch bekannt als Xperf) lesen.