From dotnet-artisan
Debugs native, .NET/CLR, and mixed-mode apps on Windows/Linux/macOS using WinDbg MCP, dotnet-dump, lldb-SOS for crash dumps, hangs, deadlocks, high CPU, memory leaks, kernel issues, and containers.
npx claudepluginhub novotnyllc/dotnet-artisan --plugin dotnet-artisanThis skill uses the workspace's default tool permissions.
Windows and Linux/macOS debugging using WinDbg MCP tools (Windows), dotnet-dump, and lldb with SOS (Linux/macOS). Applicable to any application -- native, managed (.NET/CLR), or mixed-mode. Includes container diagnostic patterns for Docker and Kubernetes. Guides investigation of crash dumps, application hangs, high CPU, and memory pressure through structured command packs and report templates.
agents/openai.yamlreferences/access-mcp.mdreferences/capture-playbooks.mdreferences/common-patterns.mdreferences/dump-workflow.mdreferences/linux-debugging.mdreferences/live-attach.mdreferences/mcp-setup.mdreferences/report-template.mdreferences/sanity-check.mdreferences/scenario-command-packs.mdreferences/symbols.mdreferences/task-crash.mdreferences/task-hang.mdreferences/task-high-cpu.mdreferences/task-kernel.mdreferences/task-memory.mdreferences/task-unknown.mdDiagnosing .NET performance issues. dotnet-counters, dotnet-trace, dotnet-dump, flame graphs.
Provides bug classification trees and systematic workflows for reproducing, isolating, identifying, and fixing crashes, hangs, memory leaks, races, deadlocks, performance issues.
Profiles .NET applications for CPU performance, memory allocations, lock contention, exceptions, heap analysis, and JIT inlining using dotnet-trace and dotnet-gcdump. Useful for bottlenecks, leaks, high CPU, and GC pressure.
Share bugs, ideas, or general feedback.
Windows and Linux/macOS debugging using WinDbg MCP tools (Windows), dotnet-dump, and lldb with SOS (Linux/macOS). Applicable to any application -- native, managed (.NET/CLR), or mixed-mode. Includes container diagnostic patterns for Docker and Kubernetes. Guides investigation of crash dumps, application hangs, high CPU, and memory pressure through structured command packs and report templates.
Platforms: Windows (WinDbg MCP, cdb), Linux/macOS (dotnet-dump, lldb with SOS, createdump, dotnet-monitor).
| Topic | Keywords | Description | Companion File |
|---|---|---|---|
| MCP setup | MCP server, WinDbg, configuration | MCP server configuration | references/mcp-setup.md |
| MCP access | MCP access, tool IDs, dispatch | MCP access patterns | references/access-mcp.md |
| Common patterns | debug patterns, SOS, CLR | Common debugging patterns | references/common-patterns.md |
| Dump workflow | dump file, .dmp, crash dump | Dump file analysis workflow | references/dump-workflow.md |
| Live attach | live process, cdb, attach | Live process attach guide | references/live-attach.md |
| Symbols | symbol server, .symfix, PDB | Symbol configuration | references/symbols.md |
| Sanity check | verify, environment, baseline | Sanity check procedures | references/sanity-check.md |
| Scenario packs | command pack, triage, workflow | Scenario command packs | references/scenario-command-packs.md |
| Capture playbooks | capture, procdump, triggers | Capture playbooks | references/capture-playbooks.md |
| Report template | diagnostic report, evidence | Diagnostic report template | references/report-template.md |
| Crash triage | crash, exception, access violation | Crash triage | references/task-crash.md |
| Hang triage | hang, deadlock, freeze | Hang triage | references/task-hang.md |
| High-CPU triage | high CPU, runaway thread, spin | High-CPU triage | references/task-high-cpu.md |
| Memory triage | memory leak, heap, LOH | Memory leak triage | references/task-memory.md |
| Kernel debugging | kernel, BSOD, bugcheck | Kernel debugging | references/task-kernel.md |
| Unknown triage | unknown issue, general triage | Unknown issue triage | references/task-unknown.md |
| Linux debugging | dotnet-dump, lldb, createdump, container | Linux/macOS debugging, dotnet-dump, lldb SOS, containers | references/linux-debugging.md |
Both skills use overlapping tools (dotnet-dump, dotnet-counters, dotnet-trace) but for different purposes:
| Scenario | Use this skill (debugging) | Use [skill:dotnet-tooling] |
|---|---|---|
| Investigating a crash dump (.dmp) | Yes | No |
| "Why did my app crash/hang/OOM?" | Yes | No |
| Attaching a debugger to a live process | Yes | No |
| "How do I profile my app's performance?" | No | Yes (profiling) |
| "How do I reduce GC pressure?" | No | Yes (gc-memory) |
| Collecting a dump for later analysis | Yes | No |
| Running dotnet-counters to monitor metrics | No | Yes (profiling) |
| Analyzing a dump with dotnet-dump | Yes | No |
| Decompiling an assembly to understand behavior | No | Yes (ilspy-decompile) |
Rule of thumb: if something is broken (crash, hang, deadlock, OOM), route here. If something is slow or needs optimization, route to [skill:dotnet-tooling].
These tool IDs are the WinDbg MCP server's exported names (single-underscore mcp_...), not the mcp__... dispatch prefix used by some hosts.
| Operation | Purpose |
|---|---|
mcp_mcp-windbg_open_windbg_remote | Attach to a live debug server |
mcp_mcp-windbg_open_windbg_dump | Open a saved dump file |
mcp_mcp-windbg_run_windbg_cmd | Execute debugger commands |
mcp_mcp-windbg_close_windbg_remote | Detach from live session |
mcp_mcp-windbg_close_windbg_dump | Close dump session |
Before any analysis, configure symbols to get meaningful stacks:
.symfix (sets srv* to Microsoft public symbols).sympath+ C:\path\to\your\pdbs.reload /flm (list modules -- check for "deferred" vs "loaded" status)Without correct symbols, stacks show raw addresses instead of function names.
mcp_mcp-windbg_open_windbg_dump with dump file path.loadby sos clr (Framework) or .loadby sos coreclr (.NET Core)!pe (print exception), !analyze -v (automatic analysis)~*e !clrstack (all managed stacks), !threads (thread list)!dumpheap -stat (heap summary), !gcroot <addr> (object roots)!threads, identify waiting threads with !syncblk (sync block table)!dlk (SOS deadlock detection)~Ns !clrstack for specific thread N!waitchain for COM/RPC chains, !mda for MDA diagnostics!runaway to identify threads consuming the most CPU time~Ns kb (native stack), ~Ns !clrstack (managed stack)!dumpheap -stat (type statistics), !dumpheap -type <TypeName> (filter)!gcroot <address> (trace GC roots to pinned or static references)!heap -s (heap summary), !heap -l (leak detection)!eeheap -gc (GC heap segments)## Diagnostic Report
**Symptom:** [crash/hang/high-cpu/memory-leak]
**Process:** [name, PID, bitness]
**Dump type:** [full/mini/live-attach]
### Evidence
- Exception: [type and message, or N/A]
- Faulting thread: [ID, managed/native, stack summary]
- Key stacks: [condensed callstack with module!function]
### Root Cause
[Concise analysis backed by stack/heap evidence]
### Recommendations
[Numbered action items]
Cross-references: [skill:dotnet-tooling] for .NET SDK diagnostic tools (references/profiling.md) and GC/memory tuning (references/gc-memory.md).