【问题标题】:Writing Chrome/V8 --trace-gc output to a file - stdout redirection does not work将 Chrome/V8 --trace-gc 输出写入文件 - 标准输出重定向不起作用
【发布时间】:2018-07-17 13:31:32
【问题描述】:

我们正在开发一个用于内存性能监控的自动化系统。

我们在 Windows7 和 MacOSX High Sierra 上都使用正确的标志 --trace-gc --trace-gc-verbose 启动 Chrome。

输出在控制台上打印并可见。但是使用标准流重定向捕获输出不起作用

我们做什么:

MacOS X: ./Google\ Chrome --js-flags="--trace-gc --trace-gc-verbose" > log.txt 2>&1

窗户: chrome --no-sandbox --js-flags="--trace_gc --trace_gc_verbose" > log.txt 2>&1

写入日志文件的内容只是您在屏幕上看到的一部分内容:文件中缺少所有与 gc 相关的数据,尽管终端窗口中有很多数据(运行时可以看到所有数据)完全没有流捕获的应用程序)。

我们假设一个新的 V8 进程正在运行,它的输出没有被定向到标准输出,尽管它在某种程度上被打印到控制台本身。

V8 C++ 代码没有显示出这种奇怪的重定向标记,非常干净的标准代码,实际上可以记录node --trace-gc script.js 的 gc 输出,而标准 stdout/stderr 没有任何问题。似乎 Chrome 添加了不良行为。

问题如何在 Windows 和 MacOS X 上将 Chrome gc 相关数据记录到文件中。

部分、不可接受的解决方案在基于 POSIX 的系统上,我们可以使用 script 命令获取所有终端输出。转储包含我们需要的所有数据,但解决方案不涵盖 Windows 场景(我们确实需要在 Windows 上进行测试),实际上它并没有解决问题,也没有解释缺少数据背后的原因,它只是隐藏了问题。

【问题讨论】:

标签: google-chrome garbage-collection chromium v8


【解决方案1】:

我认为有两点值得指出。

  1. 实际被重定向的唯一输出是与 Chrome 相关的。我的意思是,如果我们将 stderr 重定向到一个文件,我们可以看到这个文件中的错误,但只有 Chrome 的错误而不是 V8 的错误。
  2. 我想使用script 命令,因为我尝试了 Powershell Start-TranscriptTee 和其他一些选项。事实证明(这里没有惊喜)Windows 没有可用于实现预期效果的命令(AFAIK)。所以我使用了基本上预配置的 Cygwin 的 Babun (http://babun.github.io/)。没有显示 GC 日志。只有 Chrome 的相关内容。我认为 V8 的日志没有被转发到 Cygwin。

更新:
这个问题可能与这些有关:

  1. Chrome 产生了许多进程,从日志中我可以看到 - GC 日志是从子进程中收集的(与打开的终端窗口相关的 PID 不同)。我不知道仅此一项会如何影响 STDOUT 重定向。这只是我注意到的一个事实。
  2. 我发现应用程序可能知道其 STOUD 是否被重定向并以不同方式处理这种情况 - 例如。一世。当 STDOUT 被重定向到文件时使用缓冲区而不刷新,但如果它在控制台上打印则不会。

更新:
我创建了以下错误:https://bugs.chromium.org/p/chromium/issues/detail?id=865876#c3
它似乎被注意到了,有人会照顾它。

更新:
ChromeDriver 似乎可以完全满足我们的需求 - http://chromedriver.chromium.org/logging/performance-log
另一种解决方法是使用 --enable-precise-memory-info 运行 Chrome 并定期调用 window.performance.memory,但该命令无法为我们提供几乎与 ChromeDriver 一样多的数据

【讨论】:

  • 来自错误报告:“在 Windows 上,Chrome 被设置为没有终端窗口的 GUI 应用程序。如果您想在终端中查看 Chrome 的日志,您可以使用 EditBin.exe:EditBin /SUBSYSTEM:CONSOLE chrome.exe
猜你喜欢
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多