Perfview 没有停止

Perfview is not stopping

我是 运行 这个 PerfView 命令:

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

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

添加数据

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

VERBOSE LOG IN: PerfViewData.log.txt

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

Pre V4.0 .NET Rundown disabled, Type 'E' to enable symbols for V3.5 processes.

Do NOT close this console window. It will leave collection on!

Type S to stop collection, 'A' will abort.

Kernel Log: C:\PerfView\PerfViewData.kernel.etl

User mode Log: C:\PerfView\PerfViewData.etl

Starting collection at 12/07/2017 14:26:32

Collecting 10 sec: Size= 10.5 MB.

Collecting 20 sec: Size= 16.4 MB.

Exceeded MaxCollectSec 30

这里是:Exceeded MaxCollectSec 30 但继续写入 etl 文件。

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

我知道这已经有一段时间了,但看起来 /DumpHeap 开关是这里的问题 - 如果您删除它,跟踪将按时完成。 I checked the PerfView source code and when DumpHeap is selected there is some interaction with the GUI window:

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

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

}

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