depurador-node-inspect

Depure Node.js com node inspect, --inspect, breakpoints, CDP, heap e perfis de CPU.

O que é depurador-node-inspect?

Esta skill fornece ferramentas completas para depuração de aplicações Node.js usando o depurador integrado `node inspect` e o Protocolo Chrome DevTools (CDP). Ela é essencial para desenvolvedores que enfrentam problemas complexos como variáveis locais ocultas, hangs assíncronos, testes intermitentes, processos filhos, corridas de inicialização, crescimento de memória ou gargalos de CPU. Suporta uso direto no terminal (REPL) com breakpoints, inspeção de pilha, variáveis e expressões, além de acesso programático via CDP para scripts automatizados de breakpoints, captura de estado, snapshots de heap e perfis de CPU. A skill também oferece dicas específicas para o OpenClaw (plataforma de agentes AI), incluindo configuração de Vitest e propagação do depurador para processos filhos, tornando-a indispensável para depuração avançada em ambientes de agentes AI e Node.js.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/skills/node-inspect-debugger

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Depurador Node Inspect

Use para depuração Node.js que precise de acesso ao inspetor: variáveis locais ocultas, hangs assíncronos, testes intermitentes, processos filhos, corridas de inicialização, crescimento de memória ou gargalos de CPU.

Padrão é usar node inspect primeiro. Use o Protocolo Chrome DevTools apenas quando precisar de breakpoints programáticos, captura automatizada de estado, snapshots de heap ou perfis de CPU.

Início rápido

  • Pausar na entrada: node inspect path/to/script.js
  • TypeScript: node --inspect-brk --import tsx path/to/script.ts
  • PID existente: kill -SIGUSR1 <pid> depois node inspect -p <pid>
  • Listar alvos do inspetor: curl -s http://127.0.0.1:9229/json/list | jq
  • Caminho CLI do OpenClaw: node --inspect-brk openclaw.mjs ...
  • Caminho de teste do OpenClaw: OPENCLAW_VITEST_MAX_WORKERS=1 node --inspect-brk scripts/run-vitest.mjs <file>

REPL do Depurador

  • Continuar/passos: cont, next, step, out, pause
  • Breakpoints: sb('file.js', 42), sb(42), sb('functionName'), breakpoints, cb('file.js', 42)
  • Inspecionar: bt, list(8), watch('expr'), exec expr
  • Escopo atual: repl, depois avalie variáveis locais diretamente; Ctrl+C sai do modo repl.
  • Sair com segurança: cont antes de sair se o processo deve continuar; caso contrário kill.

Dicas do OpenClaw

  • Prefira binds do inspetor em 127.0.0.1. Não exponha --inspect=0.0.0.0 a menos que a rede seja isolada.
  • Para Vitest, depure um arquivo com um worker. Evite pools de workers durante a execução passo a passo.
  • Para breakpoints em código-fonte TypeScript, use --enable-source-maps quando útil; node inspect ainda pode mostrar caminhos emitidos.
  • Para processos filhos, NODE_OPTIONS=--inspect-brk pode propagar o inspetor, mas cada filho precisa de sua própria porta.
  • Para processos de gateway ou desenvolvimento de longa duração, anexe por PID após confirmar o alvo com /json/list.

CDP Programático

Instale as ferramentas fora do repositório, a menos que o projeto já dependa delas:

mkdir -p /tmp/cdp-tools
npm --prefix /tmp/cdp-tools i chrome-remote-interface
NODE_PATH=/tmp/cdp-tools/node_modules node /tmp/cdp-debug.cjs

Driver mínimo:

const CDP = require("chrome-remote-interface");

(async () => {
  const client = await CDP({ port: 9229 });
  const { Debugger, Runtime } = client;

  Debugger.paused(async ({ callFrames, reason }) => {
    const top = callFrames[0];
    console.log("paused", reason, top.url, top.location.lineNumber + 1);
    const { result } = await Debugger.evaluateOnCallFrame({
      callFrameId: top.callFrameId,
      expression: "JSON.stringify({ pid: process.pid })",
    });
    console.log(result.value ?? result.description);
    await Debugger.resume();
  });

  await Runtime.enable();
  await Debugger.enable();
  await Debugger.setBreakpointByUrl({ urlRegex: ".*target\\.js$", lineNumber: 41 });
  await Runtime.runIfWaitingForDebugger();
})();

Perfis

  • CPU: habilite Profiler, start, aguarde, stop, escreva /tmp/profile.cpuprofile, abra no Chrome DevTools.
  • Heap: habilite HeapProfiler, colete addHeapSnapshotChunk, chame takeHeapSnapshot, escreva /tmp/heap.heapsnapshot.

Armadilhas

  • --inspect não pausa; use --inspect-brk quando a configuração deve acontecer antes do código ser executado.
  • A porta padrão é 9229; use --inspect=0 ou uma porta única para alvos paralelos.
  • Se um breakpoint falhar, confira o caminho do arquivo, o comportamento do source map e se a execução já passou da linha.
  • Se o processo parecer congelado após desconectar, ele pode ainda estar pausado no depurador.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Habilidades Relacionadas