技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
pvanalyze【数据与研究】Use `pvanalyze` to inspect existing .NET `.nettrace` files from the command line, including GC, JIT, CPU stacks, allocation, DATAS, events, exceptions, timeline, and call-tree analysis with JSON or SpeedScope. USE FOR: the user mentions pvanalyze, PerfView-style CLI trace analysis, or cross-platform .nettrace inspection; the task starts from an exist…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
pvanalyze to inspect existing .NET .nettrace files from the command line, including GC, JIT, CPU stacks, allocation, DATAS, events, exceptions, timeline, and call-tree analysis with JSON or SpeedScope. USE FOR: the user mentions pvanalyze, PerfView-style CLI trace analysis, or cross-platform .nettrace inspection; the task starts from an existing .nettrace file and needs. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made."
compatibility: "Requires .NET 8 or later to run pvanalyze; trace collection usually requires dotnet-trace. Some scenarios require traces captured with verbose runtime providers or .NET 9+ DATAS events."pvanalyze, PerfView-style CLI trace analysis, or cross-platform .nettrace inspection.nettrace file and needs readable terminal or JSON output.nettraceUse dotnet-trace-collect or profiling first when the task is mostly about collecting the trace. Use pvanalyze once a trace artifact exists or when the user wants the specific command surface.
pvanalyze info <trace.nettrace> first to verify the file opens and contains the expected processes.gcstats for GC count, heap size, pause, and GC timeline questionsalloc for allocation-by-type questionsdatas for Dynamic Adaptation To Application Sizes heap-count tuningjitstats for JIT compilation costcpustacks for top CPU methods, module grouping, namespace grouping, or SpeedScope exportcalltree for hot paths and caller/callee explorationevents for provider, event type, payload, PID, or TID filteringexceptions for thrown exception summaries and detailstimeline or snapshot when an agent needs time-bucketed context--format json when another tool or agent will consume the output.--from and --to only after the baseline command confirms the interesting time window.pvanalyze clean <trace-or-directory> when generated .pvanalyze.etlx cache files should be removed.pvanalyze as a cross-platform .nettrace analyzer and explicitly says --help plus the README are the intended agent context rather than a separate upstream SKILL.md or AGENTS.md.The upstream README documents two install paths:
# .NET 10+ one-shot execution path
dnx pvanalyze
# Global tool path
dotnet tool install --global pvanalyze
If the NuGet package is not resolvable in the current environment, build or pack from source:
git clone https://github.com/adityamandaleeka/pvanalyze
cd pvanalyze
dotnet build -c Release
dotnet run -c Release -- info ./trace.nettrace
The source project is configured as a .NET tool with PackageId pvanalyze, ToolCommandName pvanalyze, and VersionPrefix 0.1.0.
Install trace collection support when you need to create the input artifact:
dotnet tool install --global dotnet-trace
dotnet-trace --version
pvanalyze --help
pvanalyze info ./trace.nettrace
pvanalyze gcstats ./trace.nettrace --format json
pvanalyze gcstats ./trace.nettrace --timeline --longest 5
pvanalyze gcstats ./trace.nettrace --from 1000 --to 2000 --timeline --format json
pvanalyze cpustacks ./trace.nettrace --top 20
pvanalyze cpustacks ./trace.nettrace --group-by module --top 10 --format json
pvanalyze cpustacks ./trace.nettrace --format speedscope --output ./trace.speedscope.json
pvanalyze events ./trace.nettrace --list --format json
pvanalyze events ./trace.nettrace --provider DotNETRuntime --type GCStart --limit 50
pvanalyze exceptions ./trace.nettrace --type NullReference --format json
pvanalyze calltree ./trace.nettrace --hot-path --depth 5 --format json
pvanalyze calltree ./trace.nettrace --caller-callee "Serialize"
General trace:
dotnet-trace collect --process-id <PID> --output ./trace.nettrace
dotnet-trace collect -- dotnet run -c Release
Allocation analysis requires allocation events:
dotnet-trace collect --providers "Microsoft-Windows-DotNETRuntime:0x200001:5" -- dotnet run -c Release
pvanalyze alloc ./trace.nettrace --group-by type --top 20 --format json
DATAS analysis requires .NET 9+ DATAS events and verbose GC runtime events:
DOTNET_GCDynamicAdaptationMode=1 dotnet-trace collect -p <PID> --providers "Microsoft-Windows-DotNETRuntime:0x4C14FCCBD:5"
pvanalyze datas ./trace.nettrace --changes-only --format json
--process <name> on gcstats, jitstats, alloc, or datas when a trace includes multiple .NET processes.--from <ms> and --to <ms> for GC, CPU, allocation, event, exception, timeline, and call-tree time windows.--format json for automation and --format text for human terminal review.cpustacks --group-by method|module|namespace and --inclusive to change CPU aggregation.calltree --hot-path, --caller-callee <method>, --depth <n>, and --min-percent <n> to keep stack output focused.timeline --lanes gc,cpu,exceptions,alloc,jit,events --buckets <n> for a compact multi-signal view.snapshot --at <ms> --window <ms> when the question is "what was happening around this timestamp?"pvanalyze analyzes trace artifacts; it does not replace dotnet-trace for collection..nettrace to a sibling .pvanalyze.etlx cache for repeated reads; this is useful but can surprise clean working directories.cpustacks; use SpeedScope or another viewer for interactive flame graph inspection.net8.0; the README also documents dnx pvanalyze as a .NET 10+ path.dotnet-trace collect command used or needed to capture the right eventspvanalyze command and output format.speedscope.json or .pvanalyze.etlx cache paths that matter for follow-uppvanalyze --help or dotnet run -c Release -- --help succeedsdotnet-trace --version succeeds when collection is part of the workflowpvanalyze info <trace.nettrace> reads the trace before deeper analysis begins--format json is usedpvanalyze clean <trace-or-directory> removes cache files when cache cleanup is required