Chrome Chronicle מס' 7: מקור לעיבוד מראש

פרק 7: מאת Bruce Dawson בסיאטל, וושינגטון (אוקטובר 2019)
הפרקים הקודמים

לפעמים כדאי להרכיב באופן ידני קובץ מקור אחד של Chromium, למשל להתנסות באפשרויות אופטימיזציה של מהדר, כדי לעבד אותם מראש לקובץ אחד כדי להבין כמה פרטי מאקרו עדינים, או כדי למזער באג מהדר (compiler)

כמה טריקים יאפשרו למפתח Chromium למצוא ולהפעיל את הפקודה מהדרת קובץ מקור מסוים, עם שינויים בהתאם לצורך.

בתור התחלה, עוברים לספריית הפלט ומשתמשים ב-autoninja (או ninja) להרכיב את הקובץ הרצוי (וכל יחסי התלות) באמצעות הסיומת ^. הסיומת הזו מורה ל-ninja ליצור את הפלט של file—version.o שצוין במקרה הזה. לאחר מכן, נוגעים בקובץ ומהדר אותו (ורק אותו) שוב עם הדגל -v (מלל) ל-ninja:

ב-Linux או ב-OSX:

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

במעטפת cmd של Windows ^ הוא תו מיוחד שיש לסמן בתו בריחה (escape):

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

הפלט האופייני של הפקודה autoninja -v נראה כך (משמעותית במידה משמעותית בוצע חיתוך):

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

הפקודה הזו מאפשרת לכם להדר את הקובץ הרצוי. כדי לקבל את העיבוד מראש הפלט, צריך לבצע את השלבים הבאים:

ב-Linux או ב-OSX, מסירים את הבלוק -o obj/base/base/version.o מהסוף, ומוסיפים את -E. הפקודה הזו מנחה את המהדר להדפיס את הקובץ שעבר עיבוד מראש כדי stdout.

מפנים את הפלט לקובץ באופן הבא:

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

ב-Windows, מסירים את האפשרות /showIncludes מההתחלה (היא מודפסת) שורת פלט לכל #include) ואז להוסיף /P כדי לבצע עיבוד מראש של הקובץ במקום להדר אותו. התוצאות יישמרו הספרייה הנוכחית ב-version.i:

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

עכשיו אתם יכולים לבחון את הקובץ שעבר עיבוד מראש כדי לראות מה עושה בפועל פקודות המאקרו, או לבצע שינויים ניסיוניים במתג המהדר (compiler) או לבצע הידור מחדש (compiler) כדי לראות מה קורה.

משאבים נוספים

  • גרסאות build מהירות של Chrome: טיפים נוספים לאופטימיזציה של גרסת ה-build (מתמקד ב-Windows).
  • ETW: איך לאתר בעיות ביצועים של Windows ב-Chrome או ב-build - על ידי קריאת מסמכי ETW (שנקראים גם Xperf).