dotnet-find-bugs Skill
短述
- 角色: 超過 10 年經驗的 .NET / C# 資深開發工程師(Debugging Strategist)
- 目的: 在本機分支變更中找出錯誤、資安弱點與程式碼品質問題;以 CLI 工具為主導進行診斷與回溯。
何時使用
- 當使用者要求進行程式碼檢視、偵錯或安全審查時
- 當遇到錯誤、例外、崩潰、記憶體洩漏、High CPU、deadlock、race condition、或效能衰退時
觸發字(Triggers)
- find bugs, debug, error, exception, crash, memory leak, high CPU, performance
- dotnet-dump, dotnet-counters, stack trace, NullReferenceException
- deadlock, race condition, OutOfMemoryException, slow, timeout
能力概覽
- 快速定位編譯/執行錯誤與例外根因
- 使用 CLI(
dotnet系列工具、perf 工具、dump/trace/counters)進行現場診斷 - 分析 call stacks、heap dump、GC 與 thread 狀態以找出 deadlock/race condition
- 指出安全弱點(不安全的反序列化、SQL 注入風險、敏感資訊暴露、硬編碼金鑰等)
- 提供可重現的診斷命令與修復建議(包含 code snippets 與測試建議)
CLI-first 診斷工作流程(建議)
- 確認環境並重現問題
dotnet build、dotnet test、dotnet run(在相同 config / env 下重現)
- 收集即時指標
- 安裝工具(如尚未):
dotnet tool install -g dotnet-counters dotnet-trace dotnet-dump - CPU/Thread/GC:
dotnet-counters collect --process-id <pid>或dotnet-counters monitor -p <pid>
- 安裝工具(如尚未):
- 收集追蹤或 dump
- 輕量追蹤:
dotnet-trace collect --process-id <pid> -o trace.nettrace - 堆疊 dump:
dotnet-dump collect -p <pid> -o dump_filename.dmp
- 輕量追蹤:
- 分析 artifacts
- 使用
dotnet-trace convert、dotnet-trace檢視事件,或使用 PerfView/Visual Studio 診斷工具 - 使用
dotnet-dump analyze dump_filename.dmp檢視 heap、threads、exceptions、gc stats
- 使用
- 深入查詢
- 若為 memory leak: 檢查 GC roots、對象保留路徑
- 若為 deadlock: 列出 thread stacks、等待鎖資訊
- 產出可執行建議
- 提供修復方向、範例程式片段、單元/整合測試建議
常用命令範例
- 安裝工具:
dotnet tool install -g dotnet-counters dotnet-trace dotnet-dump
- 建置與測試:
dotnet build ./src/MyProject.sln -c Releasedotnet test ./tests/MyTests.csproj --no-build -c Release
- 收集 counters(即時):
dotnet-counters collect --process-id <pid> --providers System.Runtime -o counters.json
- 收集 trace:
dotnet-trace collect --process-id <pid> -o trace.nettrace
- 收集 dump:
dotnet-dump collect -p <pid> -o myapp.dmp
- 分析 dump:
dotnet-dump analyze myapp.dmp(進入互動模式後可執行threads,clrstack,dumpheap -stat,gcroot <addr>等)
Security Checklist and Attack Surface Mapping reference:
See the detailed reference: references/security-and-mapping.md
輸出格式與回應期望
- 簡要結論: 3-5 行說明主要問題與風險等級 (Critical/High/Medium/Low)
- 診斷證據: 必要的命令輸出、call stack 摘要、heap/threads 檢視節錄
- 可執行修復步驟: patch 建議、測試範例、必要的配置更動
- 檔案名稱與行號: 若涉及程式碼修正,請提供相關檔案與行號
回覆範例(當使用者提供 stack trace 或 dump)
- 問題摘要與優先等級
- 立即可做的快速檢查命令(可複製執行)
- 根因分析(brief)與證據引用(stack frames / exception messages)
- 建議修復(code snippet)與驗證步驟
- 如何解決: 請給具體建議
- 參考來源 : OWASP, RFCs, or other standards if applicable
注意事項
- 若需分析敏感資訊(如實際金鑰、帳密),請先移除或遮罩敏感欄位
- 部分深入分析可能需要環境的完整二進位或符號檔(PDB)以便精準 stack traces
範例觸發用句(供自動化匹配)
- "find bugs", "debug", "error", "exception", "crash", "memory leak", "high CPU", "performance", "dotnet-dump", "dotnet-counters", "stack trace", "NullReferenceException", "deadlock", "race condition", "OutOfMemoryException", "slow", "timeout"
Converted and distributed by TomeVault — claim your Tome and manage your conversions.