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

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

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

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

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

ב-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

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

מקורות נוספים

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