Skip to content

Releases: pedrosakuma/dotnet-diagnostics

v0.14.0

11 Jun 22:48
91a6c41

Choose a tag to compare

What's Changed

  • Bump DiagnosedBenchmarks sample to benchmarkdotnet 0.13.0 by @pedrosakuma in #358
  • ci: strace-based Linux crash-repro job for SampleProfiler flake (refs #147) by @pedrosakuma in #359
  • ci: stop strace -f from hanging on leaked tracees in crash-repro job by @pedrosakuma in #360
  • ci: add non-ptrace LD_PRELOAD mmap-trace crash-repro job by @pedrosakuma in #361
  • test: un-quarantine 3 hardcoded-skip CPU sampler tests via SkipOnLinuxCiFact by @pedrosakuma in #362
  • chore: sweep repo-slug URLs to dotnet-diagnostics after rename by @pedrosakuma in #363
  • docs: add v0.13.0 output-examples gallery + reorganize docs hub by track by @pedrosakuma in #364
  • docs: reframe ptrace gate as cross-surface (MCP + CLI; BDN immune) by @pedrosakuma in #366
  • docs: add practical authorization reference (docs/authorization.md) by @pedrosakuma in #368
  • docs: scrub RFC 0001 citations to authorization.md; remove RFC 0001 by @pedrosakuma in #369
  • docs: normalize tool-reference to English + repair drilldown section by @pedrosakuma in #370
  • docs: scrub RFC 0002 citations and delete the RFC by @pedrosakuma in #371
  • docs: remove 5 design-spike docs, keep the orchestrator spec by @pedrosakuma in #372
  • chore(ghcr): publish container under the bundle name dotnet-diagnostics by @pedrosakuma in #373
  • docs: slim root README + docs hub into drill-down structure by @pedrosakuma in #374
  • docs: scrub last RFC 0001 dangling references by @pedrosakuma in #376
  • ci: skip docs-only PRs + cache Docker layers + trim crash-dump uploads by @pedrosakuma in #377
  • docs: add offenders-report example to output-examples by @pedrosakuma in #378
  • feat: emit loadBase on native frames for ASLR-resilient handoff by @pedrosakuma in #379
  • Persist per-row dispersion stats in KeyMatrixRow (#347 W3-2) by @pedrosakuma in #380
  • Retire SampleDiffer: route typed N=2 diff through comparable projectors by @pedrosakuma in #381
  • Normalize Portuguese "bootstrap implícito" to English (#389) by @pedrosakuma in #396
  • feat: Wave A auto-hints (regex backtracking, channel write backpressure, active-timer-count) by @pedrosakuma in #399
  • feat(cli): Wave A ergonomics — progress spinner, query redirect, dump path disclosure by @pedrosakuma in #400
  • Add GCHeapStats per-gen + pinned-object trend view to gc-events (#384) by @pedrosakuma in #398
  • Trim unified-tool [Description] bloat; move enums to discriminator params (#385) by @pedrosakuma in #397
  • feat(cli): opt-in --launch child-launch dev mode for zero-privilege ptrace attach (#365) by @pedrosakuma in #382
  • feat: add collect_events(kind=kestrel) Kestrel HTTP-server collector by @pedrosakuma in #402
  • Add CLI shell completion scripts by @pedrosakuma in #401
  • feat(networking): outbound-network collector (collect_events kind=networking) by @pedrosakuma in #404
  • Add startup EventPipe collector by @pedrosakuma in #403
  • docs(changelog): cut 0.14.0 (Phase 12 Wave A + Wave B) by @pedrosakuma in #405

Full Changelog: v0.13.0...v0.14.0

v0.13.0

10 Jun 12:06
c24fbd1

Choose a tag to compare

What's Changed

  • Add cpu + allocation demo benchmarks to DiagnosedBenchmarks sample by @pedrosakuma in #356
  • Attribute allocation origin (call site), not just type by @pedrosakuma in #357

Full Changelog: v0.12.0...v0.13.0

v0.12.0

10 Jun 01:28
7f63184

Choose a tag to compare

What's Changed

  • feat(benchmarkdotnet): add cpu kind with per-frame hotspots to the diagnoser by @pedrosakuma in #354
  • chore(benchmarks): consume published dotnet-diagnostics-benchmarkdotnet 0.11.0 by @pedrosakuma in #353
  • feat(benchmarkdotnet): add allocation kind (per-type GCAllocationTick) to the diagnoser by @pedrosakuma in #355

Full Changelog: v0.11.0...v0.12.0

v0.11.0

09 Jun 22:40
6a09770

Choose a tag to compare

What's Changed

  • chore(deps): Bump the actions-minor-patch group across 1 directory with 2 updates by @dependabot[bot] in #306
  • chore(deps): Bump azure/setup-helm from 4.3.0 to 5.0.0 by @dependabot[bot] in #274
  • docs: review for two deliverables (CLI + MCP server) by @pedrosakuma in #312
  • feat: CPU drilldown views (top-methods/by-module/by-namespace/hot-path/caller-callee) by @pedrosakuma in #316
  • feat: GC drilldown views (timeline/longestPauses/byGeneration) by @pedrosakuma in #317
  • feat: events catalog (collect_events kind=catalog) by @pedrosakuma in #318
  • feat: DATAS analysis (collect_events kind=datas) by @pedrosakuma in #319
  • C1: ComparableSnapshot substrate + datas/counters projectors by @pedrosakuma in #328
  • feat(comparison): N-ary SnapshotDiffer engine (C2 #324) by @pedrosakuma in #329
  • C4: extend compare_to_baseline for comparable snapshots by @pedrosakuma in #331
  • Add CLI comparable snapshot compare by @pedrosakuma in #332
  • C5: add N-way query_snapshot journey diffs by @pedrosakuma in #333
  • C6 journey diff resource links by @pedrosakuma in #334
  • docs(comparison): comparative + N-way trend investigation playbook (C7 #322) by @pedrosakuma in #335
  • W2-0 scaffold: registry-driven diff gating by @pedrosakuma in #342
  • W2-A: comparable projectors for heap/cpu/native/allocation (N-ary) by @pedrosakuma in #343
  • W2-B: comparable projectors for contention (key-set) + threadpool (scalar) by @pedrosakuma in #344
  • W2-C: expose dispersion mode on query_snapshot/compare_to_baseline + CLI by @pedrosakuma in #345
  • refactor: drop DotnetDiagnosticsMcp prefix; scope Mcp to the MCP server (refs #346) by @pedrosakuma in #349
  • docs: BenchmarkDotNet diagnoser shipping design (refs #346) by @pedrosakuma in #348
  • build: ship DotnetDiagnostics.Core as a referenceable NuGet library (refs #346) by @pedrosakuma in #350
  • feat(benchmarkdotnet): in-process diagnoser library by @pedrosakuma in #351
  • feat(benchmarkdotnet): port DiagnosedBenchmarks sample to the in-process lib by @pedrosakuma in #352

Full Changelog: v0.10.0...v0.11.0

v0.10.0

05 Jun 22:47
d78004f

Choose a tag to compare

What's Changed

Full Changelog: v0.9.1...v0.10.0

v0.9.1

02 Jun 23:55
2baa596

Choose a tag to compare

What's Changed

  • fix(core): Windows smoke-test robustness (process enum, contention/threadpool call stacks, EventPipe start timeout) by @pedrosakuma in #278

Full Changelog: v0.9.0...v0.9.1

v0.9.0

02 Jun 16:35
c409126

Choose a tag to compare

What's Changed

  • feat(symbols): resolve native/unresolved addresses to (module, rva | unmapped) by @pedrosakuma in #276

Full Changelog: v0.8.0...v0.9.0

v0.8.0 - GC Overlay & Diagnostic Improvements

26 May 23:54

Choose a tag to compare

Phase 13: GC Overlay & Diagnostic Improvements

New Features

GC Overlay for Activities - Correlate GC pause events with ActivitySource spans to identify requests impacted by garbage collection:

# Capture activities and GC simultaneously
collect_events(kind="activities") → act-handle
collect_events(kind="gc") → gc-handle

# Correlate to find impacted spans
query_collection(handle="act-handle", view="gc-overlay", gcHandle="gc-handle")

Output includes:

  • Impacted activities ranked by GC pause percentage
  • Per-activity overlap metrics (pauseMs, pausePercent)
  • Summary totals (impacted count, total GC overlap time)

Improvements

Contention Diagnostics on Linux - Improved hints when collect_events(kind="contention") returns no events on Linux (known EventPipe limitation). Now explicitly suggests:

  • collect_thread_snapshot() followed by query_snapshot(view="lock-graph") to see contended SyncBlocks with waiter counts

Technical Notes

  • LTTng-based contention was evaluated but requires CAP_SYS_ADMIN which is too invasive for sidecar deployments
  • SyncBlock-based approach works well with existing CAP_SYS_PTRACE requirement
  • Allocation call-tree already existed via collect_sample(kind="allocation") + query_snapshot(view="call-tree")

Full Changelog: v0.7.2...v0.8.0

v0.7.2 — Exception & Latency Indicators

26 May 22:21

Choose a tag to compare

What's New

Extended TopIndicators — Two new metrics for error and latency diagnostics:

Indicator Normal Elevated High Critical
exception-count 0 1-10 10-50 >50
request-duration-p95 <100ms 100-500ms 500ms-2s >2s

These surface error spikes and latency issues in the triage view even when the overall verdict is "healthy", enabling proactive optimization.

Full Changelog

v0.7.1...v0.7.2

Full Changelog: v0.7.1...v0.7.2

v0.7.1 — Ranked Top Indicators

26 May 21:56

Choose a tag to compare

What's New

Ranked Top Indicators for Proactive Optimization

The inspect_process(view="triage") now always returns TopIndicators — a ranked list of the most notable metrics even when the system is healthy. This enables proactive optimization, not just reactive firefighting.

Example output:

{
  "verdict": "healthy",
  "severity": "Healthy",
  "topIndicators": [
    {"name": "time-in-gc", "value": 8, "unit": "%", "score": 28, "level": "elevated"},
    {"name": "cpu-usage", "value": 5, "unit": "%", "score": 3, "level": "normal"},
    {"name": "alloc-rate", "value": 15, "unit": "MB/s", "score": 12, "level": "elevated"}
  ]
}

Score bands:

Metric Normal Elevated High Critical
cpu-usage <30% 30-70% 70-90% >90%
time-in-gc <5% 5-15% 15-30% >30%
queue-length <10 10-50 50-200 >200
contention <3 3-10 10-50 >50
alloc-rate <10MB/s 10-50 50-100 >100
gen2-gc 0 1-2 3-9 ≥10

This helps identify optimization opportunities before they become problems and understand the application's performance profile at a glance.

Full Changelog: v0.7.0...v0.7.1

Full Changelog: v0.7.0...v0.7.1