Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
3aa4ea9
Fix broken links in PerfView user guide documentation (#2225)
Copilot Jun 11, 2025
ee7ef76
Throw exception then TdhEnumerateProviders fails, which allows lookin…
desdesdes Jun 11, 2025
5cbea4f
Add AutomationProperties.Name to Process Selection DataGrid for acces…
Copilot Jun 19, 2025
08d0d03
Fix focus indicator visibility for hyperlinks in dark mode and high c…
Copilot Jun 19, 2025
2d397ca
Address NullReferenceException in Anti-Malware view. (#2233)
brianrob Jun 19, 2025
371607f
Fix WebView2 crash on close by implementing proper disposal pattern (…
Copilot Jun 19, 2025
372d5a6
Add support for native AOT gcdumps (#2242)
MichalStrehovsky Jun 20, 2025
cd2b0fb
Fix NVDA accessibility: Theme menu items not announcing selection sta…
Copilot Jun 20, 2025
1a18dea
Extend PredefinedDynamicTraceEventParser to Support Dynamic Events fr…
Copilot Jun 20, 2025
e1fa2a7
Implement MSFZ symbols format support in SymbolReader (#2244)
Copilot Jul 9, 2025
2e7b342
Remove uses of DefaultAzureCredential (#2255)
brianrob Jul 9, 2025
415381c
Add option to hide TimeStamp columns in EventWindow View menu (#2247)
Copilot Jul 10, 2025
76b6938
Fix NVDA screen reader incorrect list count for File menu separators …
Copilot Jul 10, 2025
7e3cf31
Increment Versions (#2260)
brianrob Jul 10, 2025
4510075
Fix unhandled exception when double-clicking in scroll bar area with …
Copilot Jul 10, 2025
4cb44a7
Fix universal symbol conversion for overlapping mappings (#2252)
Copilot Jul 11, 2025
bc9c1c6
Fix TraceEvent.props to respect ProcessorArchitecture when RuntimeIde…
Copilot Jul 11, 2025
e9a2b7e
Add explanation for CodeQL suppressions. (#2263)
brianrob Jul 15, 2025
bb36ed7
Implement NuGet Central Package Version Management (#2262)
Copilot Jul 15, 2025
eeec451
More CodeQL Suppressions (#2264)
brianrob Jul 17, 2025
4284608
Fix broken stacks warning for universal traces (#2268)
Copilot Jul 29, 2025
e7ea5b4
Fix jitted code symbols in universal traces to show assembly names in…
Copilot Jul 29, 2025
9268be2
Use themed background brush for menu and filter (#2272)
JeremyKuhne Aug 4, 2025
0e3b74a
Update NetTraceFormat.md (#2273)
noahfalk Aug 5, 2025
3c3485e
Improve rendering and dark mode (#2274)
JeremyKuhne Aug 6, 2025
45dfab9
Implement configurable symbol server authentication with /SymbolsAuth…
Copilot Aug 13, 2025
51c3343
Add a themed dialog (#2276)
JeremyKuhne Aug 18, 2025
a8605fe
Fix regression: "Goto Item in Callers/Callees" now accumulates across…
Copilot Aug 19, 2025
db63c41
Fix parsing issues and add support for additional events to the Linux…
thooot Aug 21, 2025
5c2f832
Fix TraceLog live session RelatedActivityID/ContainerID corruption by…
Copilot Aug 22, 2025
28529df
NetTrace LabelList metadata overrides and metadata flushing (#2281)
noahfalk Aug 25, 2025
13e54b6
Fix NullReferenceException in ProviderBrowser.LevelSelected when dese…
Copilot Aug 26, 2025
c63bac3
Bump version (#2290)
cincuranet Aug 26, 2025
52cb563
Only Dispose Non-Null Handles in ETWTraceEventSource (#2291)
brianrob Aug 29, 2025
e30beba
Small cleanup in NettraceUniversalConverter. (#2292)
cincuranet Sep 2, 2025
186e9ff
Fix hyperlink focus visibility in dark mode and improve keyboard navi…
Copilot Sep 5, 2025
049ed4f
Gracefully handle invalid characters in PATH. (#2296)
cincuranet Sep 8, 2025
0691921
Inventory bootstrapping (#2299)
cincuranet Sep 12, 2025
18142b7
Revise NetTraceFormat.md for clarity (#2305)
noahfalk Oct 1, 2025
ca72672
Fix the PlatformToolsetVersion Variable in C++ Build (#2306)
brianrob Oct 1, 2025
15b703d
Revise V2 field definitions in NetTraceFormat_v5.md (#2302)
noahfalk Oct 7, 2025
9810dc1
Fix copying First/Last columns with pipe symbols to work in time rang…
Copilot Oct 7, 2025
2326722
Increment Versions (#2311)
brianrob Oct 8, 2025
638121e
Increment Versions (#2312)
brianrob Oct 9, 2025
79f04f4
Add support for Boolean8 to NetTrace V6. (#2318)
noahfalk Oct 16, 2025
5ebd796
Increment Versions (#2319)
brianrob Oct 16, 2025
338bf05
Implement A Thread Time View for Universal Traces (#2320)
brianrob Oct 17, 2025
85ba4d8
Add test validating EventPipe EventSource dispatch via GetDispatcherF…
Copilot Oct 29, 2025
445faa3
Remove Incorrect Argument Description (#2323)
brianrob Oct 29, 2025
5fc5e08
Increment Versions (#2324)
brianrob Oct 29, 2025
0878f77
Warn users when circular buffer overflow causes missing type info in …
Copilot Nov 7, 2025
93fb65a
Special-Case BitMask Parsing (#2327)
brianrob Nov 7, 2025
7c9d839
Refactor PEFile and PEHeader to use ReadOnlySpan exclusively with zer…
Copilot Nov 11, 2025
fccab76
Fix cdbstack parser dropping last sample and missing metrics (#2329)
Copilot Nov 12, 2025
39d63ed
Remove Test Workaround (#2328)
brianrob Nov 12, 2025
c8b103a
Add @StephenMolloy to CODEOWNERS (#2335)
Copilot Nov 20, 2025
c0a6db5
Add FastSerialization.Tests project with comprehensive test coverage …
Copilot Nov 20, 2025
33fd4fd
Disable Azure DevOps dependabot (#2334)
Copilot Nov 20, 2025
50a5ff6
Initial Issue Triage Agent (#2336)
brianrob Nov 21, 2025
8e9a5be
Add regression tests for recursive call handling in CallTree (#2341)
Copilot Nov 21, 2025
699501e
Fix unhandled ArgumentOutOfRangeException when exporting FlameGraph w…
Copilot Nov 21, 2025
098a616
Add guidance for capturing ETW traces in Kubernetes pods (#2344)
Copilot Dec 3, 2025
0eee617
Fix CS0649 warnings in TraceEvent.Tests PEFileTests.cs and Caching Bu…
Copilot Dec 3, 2025
de20568
Fix merge command line order in kubernetes documentation (#2346)
Copilot Dec 4, 2025
896e242
Fix GetRegisteredOrEnabledProviders() documentation claiming list is …
Copilot Jan 13, 2026
bba3596
Fix duplicate stringTable elements in instrumentation manifest (#2347)
Copilot Jan 13, 2026
7381b14
Fix Histogram.AddMetric losing values after single-bucket to array tr…
Copilot Jan 15, 2026
7a795f5
Fix clipboard copy formatting based on selection dimensions in Stack …
Copilot Jan 15, 2026
2dad339
Fix XML escaping in GetManifestForRegisteredProvider (#2351)
Copilot Jan 16, 2026
9bc2b79
Fix Perfcollect CI Job (#2356)
brianrob Jan 23, 2026
b588766
Fix race condition in ProviderNameToGuid causing ERROR_INSUFFICIENT_B…
Copilot Jan 23, 2026
b3caefb
Bump version to 3.1.29 (#2358)
Copilot Jan 28, 2026
ce38a7e
doc: fix typos (#2359)
chinwobble Jan 30, 2026
07a3b98
Fix SourceLink parsing to support both wildcard and exact path mappin…
ivberg Feb 5, 2026
5409507
Improve Copilot Behavior (#2362)
brianrob Feb 13, 2026
62ef690
Re-enable DebugAssertionTests (#2363)
Copilot Feb 15, 2026
745facb
add horizontal scrolling to eventviewer (#2361)
logangeorge01 Feb 18, 2026
8f9eaaa
Add SHA-384 and SHA-512 hash algorithm support for PDB checksums (#2366)
Copilot Feb 19, 2026
498a0bb
Bump version to 3.1.30 (#2367)
brianrob Feb 20, 2026
ddcaf39
Fix Debug.Assert failures exposed by ThrowingTraceListener in SpeedSc…
brianrob Feb 23, 2026
c89763a
Add TraceParserGen.Tests project and fix code generation bugs (#2308)
Copilot Feb 24, 2026
ada70c5
Update UsersGuide.htm (#2370)
AftabAnsari10662 Feb 24, 2026
8698727
Strip .il and .ni suffixes from TraceModuleFile.Name (#2364)
leculver Feb 24, 2026
d133824
Handle provider names that start with a numeric digit. (#2369)
brianrob Feb 27, 2026
46f2cfa
Dispose WebView2 controls before Environment.Exit to prevent finalize…
brianrob Feb 27, 2026
f9873e6
Refactor GetManifestForRegisteredProvider to use XmlWriter (#2353)
Copilot Mar 11, 2026
7ca5179
docs: Add investigation guidance for JIT-inlined missing stack frames…
Copilot Mar 11, 2026
2cec8a6
Fix spurious BROKEN frame at top of Linux thread stacks in CPU Stacks…
Copilot Mar 11, 2026
7d777af
Fix NRE in AddUniversalDynamicSymbol for invalid symbol address range…
brianrob Mar 12, 2026
6b9eb26
Add missing authority parameter to log (#2379)
hoyosjs Mar 13, 2026
c1e00d4
Replace individual code owners with microsoft/perfview-reviewers grou…
brianrob Mar 16, 2026
ed427a3
Fix Dynamic Symbol Resolution for Mappings Shared Across Multiple Pro…
brianrob Mar 16, 2026
9707e62
Implement Symbol Demanglers for Linux Binaries (#2383)
brianrob Mar 18, 2026
a3829cd
Fix NullReferenceException race condition in TraceLog.AllocLookup/Fre…
Copilot Mar 20, 2026
b2e719c
Add typed schema for AllocationSampled (EventID 303, .NET 10+) in Clr…
Copilot Mar 20, 2026
bcc0670
Add ElfSymbolModule for Parsing ELF Symbol Tables (#2384)
brianrob Mar 20, 2026
9f6829b
Update BDN to latest version. (#2389)
cincuranet Mar 20, 2026
83c8085
Fixed overflow when working with large dumps (#2399)
remilema Mar 27, 2026
5ef79ab
Fix XamlMessageBox STA Threading Crash from Background Threads (#2400)
brianrob Mar 27, 2026
fec1368
Add ELF Symbol Resolution for Linux .nettrace Traces (#2397)
brianrob Mar 30, 2026
d42f6e0
Bump version to 3.2.0 (#2402)
brianrob Mar 30, 2026
696960c
Add Missing WCF Event Templates (#2390)
brianrob Mar 30, 2026
85f1ca4
Optimize nettrace-to-TraceLog Conversion (#2403)
brianrob Apr 3, 2026
afe5e5d
Embed missing System.Text.Json transitive dependencies in PerfView (#…
brianrob Apr 4, 2026
543e9e9
Update version to 3.2.1 (#2405)
Copilot Apr 4, 2026
ffa46a1
Fix PDB Symbol Resolution for Unmerged Windows Traces (#2407)
brianrob Apr 9, 2026
0f886d5
Upgrade Microsoft.Windows.CsWin32 to 0.3.209 (GHSA-ghhp-997w-qr28) (#…
Copilot Apr 13, 2026
3d1f2f7
Enable Spectre mitigations and linker optimizations for EtwClrProfile…
Apr 15, 2026
139ea6a
Fix 'unhanded' / 'occured' typos in UnhandledExceptionDialog body tex…
SAY-5 Apr 23, 2026
bb792f0
Fix GCStats failures on dotnet trace gc-verbose collections (#2414) (…
cincuranet Apr 24, 2026
2f3a001
C entrypoint fixes (#2421)
zachcmadsen May 18, 2026
e0f49b0
Bump version to 3.2.3 (#2423)
brianrob May 18, 2026
fa3ea3f
Replace PAT with WIF service connection in mirror pipeline (#2424)
missymessa May 19, 2026
e1eacef
Update CsWin32 package version (#2425)
brianrob May 24, 2026
3b34739
Retarget native profiler builds to VS 2026 v145 (#2428)
brianrob May 27, 2026
3162599
Stabilize XamlMessageBox UI-thread dispatch test (#2430)
brianrob May 28, 2026
422494e
Fix incorrect field offsets when parsing ETW events with fixed-count …
Copilot May 28, 2026
f3abc55
Fix BPerf WildCopy so short copies do not write past the requested ou…
brianrob Jun 15, 2026
7d2680d
Validate BPerf event record bounds
brianrob Jun 15, 2026
fe27fd3
Fix source-server path traversal and command injection
brianrob Jun 15, 2026
bc9cbe2
Validate PDB extraction target paths against the symbol directory
brianrob Jun 15, 2026
b1c51cb
Sanitize R2R perf map symbol paths
brianrob Jun 15, 2026
ad8e654
Constrain DiagSession resource extraction paths
brianrob Jun 15, 2026
8440d5a
Validate PdbScope XML module paths
brianrob Jun 15, 2026
3ea3634
Validate dynamic event array bounds
brianrob Jun 15, 2026
fa9719d
Sanitize provider names when writing dynamic manifests
brianrob Jun 15, 2026
a8191b0
Bounds-check StackBytesSize in EventPipe V3 event headers
brianrob Jun 15, 2026
107c4bc
Bounds-check GCDynamic event payloads
brianrob Jun 15, 2026
a245d7f
Bound CodeView PDB filename read by IMAGE_DEBUG_DIRECTORY SizeOfData
brianrob Jun 15, 2026
734cdb5
Bound PE resource name reads by the resource data directory size
brianrob Jun 15, 2026
2e98051
Bounds-check TDH metadata offsets in RegisteredTraceEventParser
brianrob Jun 15, 2026
69fa0e6
Bump ReleaseVersion to 3.2.4
brianrob Jun 15, 2026
60c3232
Bring v3.2.4 security and reliability fixes into main (#2435)
brianrob Jun 16, 2026
4239169
Fix spurious BROKEN frames on musl-based Linux stacks
brianrob Jun 20, 2026
226c25a
Fix spurious BROKEN frames on musl-based Linux stacks (#2437)
brianrob Jun 24, 2026
36d9a6a
Fix InMemoryCircularBuffer merge failure with large CircularMB (#2439)
cincuranet Jul 13, 2026
4bd9156
Fix GC dynamic ETLX replay (#2440)
brianrob Jul 15, 2026
fea55d6
Enable W4 and warnings as errors for C++ projects (#2441)
brianrob Jul 16, 2026
0d1fc7d
Bump ReleaseVersion to 3.2.5 (#2442)
brianrob Jul 16, 2026
0759c07
Support embedded portable PDBs for managed symbol resolution (#2434)
JeremyKuhne Jul 17, 2026
5e746c4
Fix StackOverflow on malformed EventPipe object type length (#2444)
brianrob Jul 20, 2026
2d3da12
Fix AccessViolation on malformed MethodILToNativeMap entry count (#2445)
brianrob Jul 22, 2026
f3ec1b3
Fix infinite loop in LinuxPerfScriptEventParser on truncated sched_sw…
brianrob Jul 23, 2026
97e8f45
Support TraceLogging formatting hints (#2443)
chwarr Jul 31, 2026
7ca8ae9
Add Accessible Label To Directory Search Field
brianrob Aug 6, 2026
d461e1e
Align Directory Field Accessible Name
brianrob Aug 6, 2026
b5f4df9
Improve Keyboard Focus Indicator Contrast (#2448)
brianrob Aug 6, 2026
3b8e4e6
Make PerfView help dismissible with Escape (#2450)
brianrob Aug 6, 2026
935e21d
Preserve directory automation name
brianrob Aug 6, 2026
54357b5
Fix main window keyboard focus order (#2449)
brianrob Aug 6, 2026
af22740
Add Accessible Label To Directory Search Field (#2447)
brianrob Aug 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions .ado.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@ pr:
jobs:
- job: PerfView_Debug
pool:
vmImage: 'windows-2022'
vmImage: 'windows-2025-vs2026'
name: Azure Pipelines
demands:
- msbuild
- vstest

steps:
- template: /.pipelines/perfview-job.yml
Expand All @@ -28,11 +25,8 @@ jobs:

- job: PerfView_Release
pool:
vmImage: 'windows-2022'
vmImage: 'windows-2025-vs2026'
name: Azure Pipelines
demands:
- msbuild
- vstest

steps:
- template: /.pipelines/perfview-job.yml
Expand Down
5 changes: 5 additions & 0 deletions .azuredevops/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
version: 2

# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.
enable-campaigned-updates: false
enable-security-updates: false
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths.
# See https://help.github.com/articles/about-code-owners/

* @brianrob @cincuranet @leculver @mconnew @marklio
* @microsoft/perfview-reviewers
416 changes: 416 additions & 0 deletions .github/agents/issue-triager.md

Large diffs are not rendered by default.

70 changes: 70 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Copilot Instructions for PerfView

## Project Overview

PerfView is a Windows performance-analysis tool for investigating CPU and memory issues, built on the TraceEvent library for parsing ETW and EventPipe trace data. The solution (`PerfView.sln`) contains the WPF GUI application, the cross-platform TraceEvent library, and several supporting libraries.

## Architecture

- `src/PerfView/` — WPF GUI application (Windows-only, .NET Framework 4.7.2+, C# 7.3 features only)
- `src/TraceEvent/` — Core trace parsing library (cross-platform, targets netstandard2.0)
- `src/FastSerialization/` — Lightweight binary serialization library
- `src/MemoryGraph/` — Memory dump analysis (graph-based heap representation)
- `src/Utilities/` — Shared utility code
- `src/HeapDump*/` — Heap dump capture using ClrMD (Windows-only native interop)
- `src/EtwClrProfiler/` — Native C++ CLR profiler emitting ETW events (Windows-only)
- `src/PerfViewExtensions/` — Extensibility mechanism ("Global" project)

## Build & Test

- **Full solution (Windows):** `build.cmd` or open `PerfView.sln` in Visual Studio 2026 with the repository `.vsconfig` components installed. Native ETWClrProfiler projects use the latest installed MSVC v145 toolset.
- **Individual projects (cross-platform via dotnet CLI):**
- `dotnet build src/TraceEvent/TraceEvent.csproj -c Debug`
- `dotnet build src/FastSerialization/FastSerialization.csproj -c Debug`
- `dotnet build src/MemoryGraph/MemoryGraph.csproj -c Debug`
- **Running tests:** `dotnet test <TestProject>.csproj -c Debug` — always use Debug configuration so assertions are active.
- `src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj`
- `src/FastSerialization.Tests/FastSerialization.Tests.csproj`
- `src/LinuxTracing.Tests/LinuxTracing.Tests.csproj`
- `src/PerfView.Tests/PerfView.Tests.csproj` (Windows-only)
- `src/SymbolsAuth.Tests/SymbolsAuth.Tests.csproj`
- Tests use **xUnit**. The full test suite should complete in under 1 minute.
- NuGet uses central package management (`src/Directory.Packages.props`). Use the repo-local `Nuget.config` when restoring: `dotnet restore --configfile Nuget.config`.

## C# Coding Conventions

Follow existing patterns — when in doubt, match the surrounding code.

### Naming
- Standard .NET conventions: `PascalCase` for types, methods, and properties; `camelCase` for parameters and locals.
- Private instance fields: prefix with `m_` (e.g., `m_nodeCount`). The `_` prefix is also acceptable.
- Static fields: prefix with `s_` (e.g., `s_defaultSize`).
- No Hungarian notation.

### Class Layout
- Order members for readability as a **public contract**: constructors/factories first, then properties, then methods.
- All private members go **after** all public members, wrapped in `#region private` so Visual Studio outlining (Ctrl-M Ctrl-O) collapses them.
- Fields go **together at the end** of the private region — this makes it easy to see all object state at a glance.

### Comments & Documentation
- This codebase is **heavily commented** — maintain that standard.
- Public types and public members exposed outside their assembly **must** have XML doc comments (`/// <summary>`). Parameter-level docs are optional if names are descriptive.
- Private fields often need comments, especially to document invariants they maintain.
- Use inline comments to explain non-obvious logic and design decisions.

### Error Handling & Assertions
- Use `Debug.Assert()` liberally to validate internal invariants — this is why tests must run in Debug configuration.
- Throw specific exceptions with descriptive messages for public API misuse.

### Other Patterns
- **Type aliases** for semantic clarity: `using Address = System.UInt64;`
- **Lazy initialization** for expensive sub-objects (check for null, create on first access).
- **Reuse event objects** in TraceEvent callbacks to minimize GC pressure.

## Making Changes

- Keep changes **minimal and focused** — complexity is the enemy (see `CONTRIBUTING.md`).
- Prefer **simplicity over cleverness**. Performance optimizations that add complexity need measurements to justify them.
- Run tests in **Debug** configuration before submitting changes.
- PerfView embeds its support DLLs into the EXE at build time, creating non-obvious build dependencies. If you see "DLL not found" errors, a normal (non-clean) rebuild usually fixes it.
- The `Global` project depends on PerfView — expect unresolved references there until PerfView builds first.
22 changes: 16 additions & 6 deletions .pipelines/mirror.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
trigger:
- main

variables:
- group: 'DotNet-VSTS-Infra-Access'

resources:
repositories:
- repository: 1esPipelines
Expand All @@ -29,6 +26,19 @@ extends:
jobs:
- job: Mirror
steps:
- task: AzureCLI@2
displayName: 'Mint AzDO token via WIF'
inputs:
azureSubscription: 'DncEng Insertion: Roslyn and Razor'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
$token = az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv
if ($LASTEXITCODE -ne 0) { Write-Error "Failed to get access token"; exit 1 }
$token = $token.Trim()
if ([string]::IsNullOrWhiteSpace($token)) { Write-Error "Token is empty"; exit 1 }
Write-Host "##vso[task.setvariable variable=AzdoToken;issecret=true]$token"

- task: PowerShell@1
displayName: 'Set SourceBranch Variable'
inputs:
Expand Down Expand Up @@ -108,18 +118,18 @@ extends:
- task: CmdLine@2
displayName: 'Pull AzDO SourceBranch'
inputs:
script: 'git pull --strategy=recursive --strategy-option no-renames https://dn-bot:$(dn-bot-devdiv-build-rw-code-rw)@devdiv.visualstudio.com/DevDiv/_git/perfView $(SourceBranch)'
script: 'git pull --strategy=recursive --strategy-option no-renames https://x-access-token:$(AzdoToken)@devdiv.visualstudio.com/DevDiv/_git/perfView $(SourceBranch)'

- task: CmdLine@2
displayName: 'Run git push'
inputs:
script: 'git push https://dn-bot:$(dn-bot-devdiv-build-rw-code-rw)@devdiv.visualstudio.com/DevDiv/_git/perfView $(MirrorBranch)'
script: 'git push https://x-access-token:$(AzdoToken)@devdiv.visualstudio.com/DevDiv/_git/perfView $(MirrorBranch)'

- task: PowerShell@1
displayName: 'Create Pull Request'
inputs:
scriptType: inlineScript
arguments: '$(dn-bot-devdiv-build-rw-code-rw)'
arguments: '$(AzdoToken)'
inlineScript: |
param(
[string]$AccessToken
Expand Down
7 changes: 5 additions & 2 deletions .pipelines/perfcollect-job.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
steps:
- task: DockerInstaller@0
displayName: 'Install Docker'
- task: Bash@3
displayName: 'Get Docker Version'
inputs:
targetType: inline
script: 'docker --version'

- task: Bash@3
displayName: 'Build Containers'
Expand Down
9 changes: 9 additions & 0 deletions .pipelines/perfview-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ steps:
msbuildArguments: '/restore'
configuration: ${{ parameters.flavor }}

- task: VisualStudioTestPlatformInstaller@1
displayName: 'Install VS Test'
inputs:
versionSelector: 'latestStable'
packageFeedSelector: 'customFeed'
customFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json'

- task: VSTest@2
displayName: 'Run Tests'
inputs:
Expand All @@ -25,7 +32,9 @@ steps:
**\bin\**\SymbolsAuthTests.dll
**\bin\**\TraceEventTests.dll
**\bin\**\PerfViewTests.dll
**\bin\**\TraceParserGen.Tests.dll

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New tests skipped in CI

Medium Severity

The new FastSerialization.Tests project builds as FastSerializationTests.dll, but the pipeline test assembly list only adds TraceParserGen.Tests.dll. Those new serialization tests never run in CI, so regressions in FastSerialization can ship undetected.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit af22740. Configure here.

testRunTitle: 'PerfView - ${{ parameters.flavor }}'
vsTestVersion: 'toolsInstaller'
runTestsInIsolation: true
otherConsoleOptions: '--blame'

Expand Down
9 changes: 9 additions & 0 deletions Nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
<add key="perfview-build" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/perfview-build/nuget/v3/index.json" />
</packageSources>
<packageSourceMapping>
<packageSource key="dotnet-public">
<package pattern="*" />
</packageSource>
<packageSource key="perfview-build">
<package pattern="Microsoft.Diagnostics.Tracing*" />
<package pattern="PerfView.*" />
</packageSource>
</packageSourceMapping>
<disabledPackageSources>
<clear />
</disabledPackageSources>
Expand Down
78 changes: 71 additions & 7 deletions PerfView.sln
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.32821.20

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.6.11620.235 main
MinimumVisualStudioVersion = 15.0
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView", "src\PerfView\PerfView.csproj", "{6BAC7496-6953-41B8-9042-AAE45405A095}"
ProjectSection(ProjectDependencies) = postProject
Expand Down Expand Up @@ -38,6 +39,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
CONTRIBUTING.md = CONTRIBUTING.md
src\Directory.Build.props = src\Directory.Build.props
src\Directory.Build.targets = src\Directory.Build.targets
src\Directory.Packages.props = src\Directory.Packages.props
src\PerfViewCollect\PerfViewCollect.csproj = src\PerfViewCollect\PerfViewCollect.csproj
README.md = README.md
EndProjectSection
Expand Down Expand Up @@ -81,10 +83,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MemoryGraph", "src\MemoryGr
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EtwHeapDump", "src\EtwHeapDump\EtwHeapDump.csproj", "{F266BD46-34EE-4EEB-8B21-6059F4DFC51F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{1CAEF854-2923-45FA-ACB8-6523A7E45896}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastSerialization.Tests", "src\FastSerialization.Tests\FastSerialization.Tests.csproj", "{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerfView.Tutorial", "src\PerfView.Tutorial\PerfView.Tutorial.csproj", "{DE35BED9-0E03-4DAC-A003-1ACBBF816973}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceParserGen.Tests", "src\TraceParserGen.Tests\TraceParserGen.Tests.csproj", "{F127C664-2F56-429B-BAA6-636034F766EF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceEvent.Benchmarks", "src\TraceEvent\TraceEvent.Benchmarks\TraceEvent.Benchmarks.csproj", "{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TraceEvent", "TraceEvent", "{F2AE6042-2485-6774-F42B-98E120E28306}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TraceEvent.Tests", "TraceEvent.Tests", "{282B72FF-D1CF-1C67-705A-D384E1729A5D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EmbeddedPdbTestApp", "src\TraceEvent\TraceEvent.Tests\EmbeddedPdbTestApp\EmbeddedPdbTestApp.csproj", "{1CE6D3C2-5E27-4296-89FD-5177387F0B15}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -391,6 +405,18 @@ Global
{F266BD46-34EE-4EEB-8B21-6059F4DFC51F}.Release|x64.Build.0 = Release|Any CPU
{F266BD46-34EE-4EEB-8B21-6059F4DFC51F}.Release|x86.ActiveCfg = Release|Any CPU
{F266BD46-34EE-4EEB-8B21-6059F4DFC51F}.Release|x86.Build.0 = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|x64.ActiveCfg = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|x64.Build.0 = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|x86.ActiveCfg = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Debug|x86.Build.0 = Debug|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|Any CPU.Build.0 = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|x64.ActiveCfg = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|x64.Build.0 = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|x86.ActiveCfg = Release|Any CPU
{2EC430A3-1B65-4628-B2F2-8DBEB4C03132}.Release|x86.Build.0 = Release|Any CPU
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -403,17 +429,55 @@ Global
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Release|x64.Build.0 = Release|Any CPU
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Release|x86.ActiveCfg = Release|Any CPU
{DE35BED9-0E03-4DAC-A003-1ACBBF816973}.Release|x86.Build.0 = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|x64.ActiveCfg = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|x64.Build.0 = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|x86.ActiveCfg = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Debug|x86.Build.0 = Debug|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|Any CPU.Build.0 = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|x64.ActiveCfg = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|x64.Build.0 = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|x86.ActiveCfg = Release|Any CPU
{F127C664-2F56-429B-BAA6-636034F766EF}.Release|x86.Build.0 = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|x64.ActiveCfg = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|x64.Build.0 = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|x86.ActiveCfg = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Debug|x86.Build.0 = Debug|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|Any CPU.Build.0 = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|x64.ActiveCfg = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|x64.Build.0 = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|x86.ActiveCfg = Release|Any CPU
{F2FBDEF0-4C45-44B2-8B92-9C5763BD2E69}.Release|x86.Build.0 = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|x64.ActiveCfg = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|x64.Build.0 = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|x86.ActiveCfg = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Debug|x86.Build.0 = Debug|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|Any CPU.Build.0 = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|x64.ActiveCfg = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|x64.Build.0 = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|x86.ActiveCfg = Release|Any CPU
{1CE6D3C2-5E27-4296-89FD-5177387F0B15}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F2AE6042-2485-6774-F42B-98E120E28306} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{282B72FF-D1CF-1C67-705A-D384E1729A5D} = {F2AE6042-2485-6774-F42B-98E120E28306}
{1CE6D3C2-5E27-4296-89FD-5177387F0B15} = {282B72FF-D1CF-1C67-705A-D384E1729A5D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9F85A2A3-E0DF-4826-9BBA-4DFFA0F17150}
EndGlobalSection
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = PerfView2.vsmdi
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{DE35BED9-0E03-4DAC-A003-1ACBBF816973} = {1CAEF854-2923-45FA-ACB8-6523A7E45896}
EndGlobalSection
EndGlobal
Loading
Loading