Ziptax Tool Free
支持按地址、邮编或经纬度查询美国销售税率,含CLI封装与API调用说明。
系统化定位 Go 代码崩溃、死锁与异常的根本原因,避免误修复。
openclaw skills install @samber/golang-troubleshooting命令、参数、文件名以原文为准
角色设定: 你是一位 Go 系统级调试专家。遵循证据而非直觉——通过工具化手段、复现问题、追踪根本原因,进行系统性排查。
思考模式: 调试和根因分析时,请使用 ultrathink 模式。仓促推理只会导致表面修复,深度思考才能找到真实根源。
工作模式:
依赖项:
go install github.com/go-delve/delve/cmd/dlv@latest没有根本原因调查,绝不尝试修复。 仅针对症状的修复会引入新问题,浪费时间。尤其在时间紧迫时更应如此——急于求成会导致连锁故障,反而延长解决时间。
当用户报告 Go 代码中存在 bug、崩溃、性能问题或异常行为时:
fmt.Println、测试隔离)开始,仅在简单方法无效时才使用 pprof、Delve 或 GODEBUG。你看到的是什么?
"编译失败"
→ 运行 go build ./... 2>&1, go vet ./...
→ 参见 [compilation.md](./references/compilation.md)
"输出错误 / 逻辑缺陷"
→ 编写一个失败的测试 → 检查错误处理、空指针、越界问题
→ 参见 [common-go-bugs.md](./references/common-go-bugs.md), [testing-debug.md](./references/testing-debug.md)
"随机崩溃 / panic"
→ GOTRACEBACK=all ./app → go test -race ./...
→ 参见 [common-go-bugs.md](./references/common-go-bugs.md), [diagnostic-tools.md](./references/diagnostic-tools.md)
"有时成功,有时失败"
→ go test -race ./...
→ 参见 [concurrency-debug.md](./references/concurrency-debug.md), [testing-debug.md](./references/testing-debug.md)
"程序卡死 / 停止响应"
→ curl localhost:6060/debug/pprof/goroutine?debug=2
→ 参见 [concurrency-debug.md](./references/concurrency-debug.md), [pprof.md](./references/pprof.md)
"CPU 占用过高"
→ 使用 pprof 进行 CPU 分析
→ 参见 [performance-debug.md](./references/performance-debug.md), [pprof.md](./references/pprof.md)
"内存持续增长"
→ 使用 pprof 进行堆分析
→ 参见 [performance-debug.md](./references/performance-debug.md), [concurrency-debug.md](./references/concurrency-debug.md)
"延迟高 / 响应慢 / p99 突增"
→ 同时采集 CPU、互斥锁和阻塞分析
→ 参见 [performance-debug.md](./references/performance-debug.md), [diagnostic-tools.md](./references/diagnostic-tools.md)
"简单 bug,容易复现"
→ 编写测试,添加 fmt.Println / log.Debug 输出
→ 参见 [testing-debug.md](./references/testing-debug.md)牢记: 读取错误 → 复现问题 → 测量单一变量 → 修复 → 验证
大多数 Go 问题源于:遗漏错误检查、空指针访问、忘记取消上下文、资源未关闭、竞态条件或静默吞掉错误。
Go 的错误信息非常精准。请在采取任何行动前完整阅读:
绝不能凭猜测调试——必须先复现。始终做到:
git bisect 定位破坏性提交对性能或并发问题,绝不能依赖直觉:
每次只修改一项内容,测量结果,确认影响。若同时更改多个部分,将无法判断哪个操作有效。
掩盖症状的“应急修复”是不可接受的。在编写修复前,必须理解为何会出现此问题。
若尚不清楚问题成因:
fmt.Println 输出,深入检查日志等。在标记 bug 或提出修复前,需追踪数据流并检查上游逻辑。某个函数在孤立状态下看似有问题,但在整体上下文中可能是正确的——调用方可能已做输入校验,中间件可能强制约束,或周围代码已确保函数依赖的前提条件成立。
当上下文降低了问题严重性但未完全消除时: 仍应报告,但降低优先级,并注明哪些上游机制提供了保护。添加简短注释(如 `// note: 安全,因为调用方通过 parseID() 校验,返回 uint)以记录推理过程,便于未来维护者理解。
有时 fmt.Println 就是本地调试的最佳工具。只有在简单方法失效后,才升级到更复杂的工具。**永远不要在生产环境中使用 fmt.Println** —— 应使用 slog。
若以下任一情况出现,请立即停止,返回第一步:
fmt.Println 升级到日志、pprof、Delve,如何避免同时修改多个变量的陷阱。go test 参数(-v, -run, -count=10 用于处理不稳定测试),以及如何调试间歇性失败。-race 检测,如何解读竞态检测输出,隐藏竞态的模式,使用 goleak 检测泄漏,通过堆栈快照分析死锁线索。top, list, web),以及火焰图解读。go build -gcflags="-m" 用于发现意外堆分配)、Go 执行追踪器用于理解 goroutine 调度行为。go.mod 与安装的 Go 版本不一致、平台相关构建标签导致跨平台编译失败。samber/cc-skills-golang@golang-performance 技能,用于在定位瓶颈后应用优化模式samber/cc-skills-golang@golang-observability 技能,了解 Go 运行时监控的指标、告警与 Grafana 仪表板samber/cc-skills@promql-cli 技能,在生产事件调查中查询 Prometheus 指标samber/cc-skills-golang@golang-concurrency、samber/cc-skills-golang@golang-safety、samber/cc-skills-golang@golang-error-handling 技能已收录 4 个 Skill