使用 V8 分析 Chromium

从 V8 的 shell 程序中使用 V8 的 CPU 和 堆分析器很简单,但是如何将它们与 Chromium 一起使用可能会感到困惑。此页面可以给你提供帮助。

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

与 V8 shell 不同,Chromium 是一个复杂的应用程序。以下是影响分析器使用的 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