# Serverless Debugging

> Debug serverless and edge functions—limited logs, cold starts, timeouts, env/config mismatches. Use for Lambda, Cloud Functions, Workers, Vercel/Netlify functions.

- Skill: `charlieviettq/serverless-debugging` (Agent Skill)
- Install (CLI): `npx skillmds@latest add charlieviettq/serverless-debugging`
- Raw SKILL.md: https://api.skillmd.com/api/skills/charlieviettq/serverless-debugging/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: charlieviettq (https://skillmd.com/u/charlieviettq)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/charlieviettq/serverless-debugging

---


# Serverless Debugging

Systematic debugging when traditional server logs and SSH are unavailable. Complements `test-failure-triage` with environment-specific constraints.

## When to use

- Intermittent 5xx from functions
- Timeout or memory limit errors
- Works locally but fails when deployed

## When not to use

- Long-running container services with full shell access
- Client-only bugs (use browser DevTools skills)

## Workflow

1. **Reproduce** — identify trigger (HTTP event, queue, schedule)
2. **Logs** — cloud provider log group/stream; filter by request ID
3. **Config** — compare env vars/secrets: local vs deployed (names only, never log values)
4. **Limits** — timeout, memory, payload size, concurrency
5. **Cold start** — init duration, heavy imports, VPC ENI delay
6. **Dependencies** — outbound network, IAM permissions, region mismatch
7. **Minimal fix** — smallest change; redeploy; verify with structured log line

## Common failure modes

| Symptom | Likely cause |
|---------|----------------|
| Task timed out | Slow downstream, missing async, too much work in handler |
| Cannot find module | Bundle/packaging; wrong runtime |
| Access denied | IAM role, resource policy |
| Connection timeout | VPC/subnet/NAT; wrong security group |
| Works once then fails | State in `/tmp`; connection pool reuse |

## Practices

- Structured JSON logs with `requestId`, `stage`, `durationMs`
- Fail fast on missing required env with clear error message (no secret values)
- Use X-Ray or vendor tracing for cross-service calls
- Keep handlers thin; push heavy work to async queues when needed

