Help us improve
Share bugs, ideas, or general feedback.
From dotnet-artisan
Debugs Windows and Linux/macOS applications (native, .NET/CLR, mixed-mode) using WinDbg MCP, dotnet-dump, lldb with SOS, and container diagnostics. Covers crash dumps, hangs, high CPU, memory leaks, and kernel debugging.
npx claudepluginhub fenzel999/dotnet-artisan --plugin dotnet-artisanHow this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-artisan:dotnet-debuggingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
references/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.mdProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Guides systematic root-cause debugging when tests fail, builds break, or unexpected errors occur. Provides a structured triage checklist to preserve evidence, localize, and fix issues instead of guessing.
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).
Path resolution: The Companion File column lists filenames relative to this skill's directory. Use Glob to locate the file (pattern: ), then pass the returned absolute path to the Read tool. Do NOT use bare relative paths — the Read tool resolves them relative to the user's project directory, not this skill's location.
| 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 (profiling, GC tuning, dotnet-counters, dotnet-trace).