Chromium Chronicle #7: منبع پیش پردازش

قسمت 7: توسط بروس داوسون در سیاتل، WA (اکتبر، 2019)
قسمت های قبلی

گاهی اوقات کامپایل یک فایل منبع Chromium به صورت دستی ، شاید آزمایش گزینه های بهینه سازی کامپایلر، پیش پردازش آن در یک فایل واحد برای درک برخی جزئیات ظریف ماکرو، یا به حداقل رساندن اشکال کامپایلر مفید است.

چند ترفند به توسعه‌دهنده Chromium اجازه می‌دهد دستوری را که یک فایل منبع خاص را کامپایل می‌کند، با تغییراتی که لازم است پیدا کرده و اجرا کند.

با رفتن به فهرست خروجی خود و استفاده از autoninja (یا ninja) برای کامپایل فایل مورد علاقه (و هر وابستگی) با استفاده از پسوند ^ شروع کنید. این پسوند به ninja می گوید که خروجی file—version.o در این مورد. سپس، فایل را لمس کنید و دوباره آن را (و فقط آن) را با پرچم -v (کلام) به ninja کامپایل کنید :

در لینوکس یا OSX:

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

در پوسته cmd ویندوز ^ یک کاراکتر خاص است و باید از آن فرار کرد:

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

این دستور به شما امکان می دهد فایل مورد نظر را کامپایل کنید. برای دریافت خروجی از پیش پردازش شده، از مراحل زیر استفاده کنید:

در لینوکس یا OSX، بلوک -o obj/base/base/version.o از انتها حذف کرده و -E را اضافه کنید . این به کامپایلر می گوید که فایل از پیش پردازش شده را در stdout چاپ کند.

خروجی را به یک فایل هدایت کنید، مانند این:

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

در ویندوز، گزینه /showIncludes را از ابتدا حذف کنید (برای هر #include یک خط خروجی چاپ می کند) و سپس /P را اضافه کنید تا به جای کامپایل کردن، فایل را از قبل پردازش کنید. نتایج در دایرکتوری فعلی در version.i ذخیره می شود:

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

اکنون می‌توانید فایل از پیش پردازش شده را بررسی کنید تا ببینید ماکروها واقعاً چه کاری انجام می‌دهند، یا تغییرات آزمایشی سوئیچ کامپایلر را انجام دهید و دوباره کامپایل کنید تا ببینید چه اتفاقی می‌افتد.

منابع اضافی

  • ساخت‌های سریع کروم : برای نکات بیشتر درباره بهینه‌سازی ساخت (متمرکز بر ویندوز).
  • ETW : با خواندن اسناد ETW (همچنین به عنوان Xperf شناخته می شود) نحوه یافتن مشکلات عملکرد ویندوز را بیابید - در کروم یا در ساخت.