Chromium Chronicle #7: Sumber Pra-pemrosesan

Episode 7: oleh Bruce Dawson di Seattle, WA (Oktober, 2019)
Episode sebelumnya

Terkadang akan sangat membantu jika Anda mengompilasi satu file sumber Chromium secara manual, mungkin bereksperimen dengan opsi pengoptimalan compiler, untuk melakukan pra-pemrosesan ke satu file untuk memahami beberapa detail makro yang halus, atau untuk meminimalkan {i>bug<i} kompilator.

Beberapa trik akan memungkinkan pengembang Chromium menemukan dan menjalankan perintah yang mengompilasi file sumber tertentu, dengan modifikasi sesuai kebutuhan.

Mulailah dengan masuk ke direktori {i>output<i} Anda dan gunakan autoninja (atau ninja) untuk kompilasi file yang diinginkan (dan dependensi apa pun) menggunakan akhiran ^. Akhiran ini memberi tahu ninja untuk membuat output dari file—version.o yang ditentukan dalam kasus ini. Kemudian, sentuh file, dan kompilasi (dan hanya file) dengan flag -v (panjang) ke ninja:

Di Linux atau OSX:

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

Pada Windows cmd shell, ^ adalah karakter khusus dan harus di-escape:

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

Output standar perintah autoninja -v terlihat seperti ini (secara signifikan dipangkas):

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

Perintah ini memungkinkan Anda mengompilasi file yang diinginkan. Untuk mendapatkan pra-pemrosesan gunakan langkah-langkah berikut:

Di Linux atau OSX, hapus blok -o obj/base/base/version.o dari bagian akhir, dan menambahkan -E. Ini memberitahu compiler untuk mencetak file yang telah diproses sebelumnya ke {i>stdout<i}.

Alihkan output ke file, seperti ini:

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

Di Windows, hapus opsi /showIncludes dari awal (akan dicetak baris output untuk setiap #include) lalu tambahkan /P untuk melakukan prapemrosesan file, bukan mengompilasinya. Hasilnya akan disimpan di direktori saat ini di version.i:

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

Sekarang Anda dapat memeriksa file yang telah diproses untuk melihat apa yang sebenarnya dilakukan makro, atau buat perubahan switch compiler eksperimental dan kompilasi ulang untuk melihat apa yang terjadi.

Referensi Tambahan

  • Pembuatan Chrome yang Cepat: Untuk tips pengoptimalan build lainnya (berfokus pada Windows).
  • ETW: Cari tahu cara menemukan masalah performa Windows—di Chrome atau pada build—dengan membaca dokumen ETW (juga dikenal sebagai Xperf).