Perfview 没有停止

Jas*_*per 5 perfview

我正在运行这个 PerfView 命令:

PerfView.exe /Merge:true /zip:true /NoNGenRundown /NoClrRundown /KeepAllEvents /ThreadTime /DumpHeap /NoView /NoGui /MaxCollectSec:30 collect

但似乎即使我定义/MaxCollectSec:30为 30 秒,实际的数据收集过程也不会停止并继续将数据添加到PerfViewData.etl文件中

这是运行命令时 Perfview 打开的控制台窗口的输出:

详细登录:PerfViewData.log.txt

执行:PerfView /Merge:true /zip:true /NoNGenRundown /NoClrRundown /KeepAllEvents /ThreadTime /DumpHeap /NoView /NoGui /MaxCollectSec:30 收集

V4.0 之前的 .NET Rundown 已禁用,请键入“E”以启用 V3.5 进程的符号。

不要关闭此控制台窗口。它将继续收集!

输入 S 停止收集,“A”将中止。

内核日志:C:\PerfView\PerfViewData.kernel.etl

用户模式日志:C:\PerfView\PerfViewData.etl

2017年12月7日14:26:32开始采集

收集 10 秒:大小= 10.5 MB。

收集 20 秒:大小= 16.4 MB。

超过 MaxCollectSec 30

所以就是这样:Exceeded MaxCollectSec 30但继续写入 etl 文件。

我想向客户端发送 Perfview 命令来收集系统范围的数据,并将包含来自 Perfview 的所有 ETL 文件的 zip 文件发回给我。目前命令没有停止 - 有人知道为什么吗?我应该从命令中添加/删除什么,以便它会在 30 秒后自动停止?

low*_*ign 4

我知道已经有一段时间了,但看起来/DumpHeap开关是这里的问题 - 如果您将其删除,跟踪将按时完成。我检查了 PerfView 源代码,当选择 DumpHeap 时,会与 GUI 窗口进行一些交互:

if (parsedArgs.DumpHeap)
{
    // Take a heap snapshot.
    GuiHeapSnapshot(parsedArgs, true);

    // Ensure that we clean up the heap snapshot state.
    parsedArgs.DumpHeap = false;

}
Run Code Online (Sandbox Code Playgroud)

您可以在perfview中创建一个问题来描述您的问题。