使用 V8 分析 Chromium

V8 的 CPU 和堆分析器 在 V8 的 shell 中使用起来非常简单,但使用它们分析 Chromium 可能会让人感到困惑。本页将帮助您解决这个问题。

为什么使用 V8 的分析器分析 Chromium 与使用它们分析 V8 shell 不同? #

Chromium 是一个复杂的应用程序,与 V8 shell 不同。以下是影响分析器使用方式的 Chromium 功能列表

如何运行 Chromium 以获取 CPU 分析? #

以下是如何运行 Chromium 以从进程开始时获取 CPU 分析

./Chromium --no-sandbox --user-data-dir=`mktemp -d` --incognito --js-flags='--prof'

请注意,您不会在开发者工具中看到分析,因为所有数据都记录到文件中,而不是开发者工具。

标志说明 #

--no-sandbox 关闭渲染器沙箱,以便 Chrome 可以写入日志文件。

--user-data-dir 用于创建新的配置文件,使用它可以避免缓存和已安装扩展程序的潜在副作用(可选)。

--incognito 用于进一步防止结果污染(可选)。

--js-flags 包含传递给 V8 的标志

Android #

Android 上的 Chrome 有许多独特的点,使得分析它变得更加复杂。

以下命令在 Android 上启用分析

./build/android/adb_chrome_public_command_line --no-sandbox --single-process --js-flags='--logfile=/storage/emulated/0/Download/%t.log,--prof'
<Close and relaunch Chome on the Android device>
adb pull /storage/emulated/0/Download/<logfile>
./src/v8/tools/linux-tick-processor --apk-embedded-library=out/Release/lib.unstripped/libchrome.so --preprocess <logfile>

注释 #

在 Windows 上,请确保为 chrome.dll 启用 .MAP 文件创建,但不要为 chrome.exe 启用。