2
0

debugging-tools.md 2.8 KB

Debugging Tools

Debuggers by Language

Language Debugger Start Command
TypeScript/JS Node Inspector node --inspect
Python pdb/ipdb python -m pdb
Go Delve dlv debug
Rust rust-gdb/lldb rust-gdb ./target/debug/app
Java JDB/IDE IDE debugger

Node.js / TypeScript

# Start with inspector
node --inspect dist/main.js

# Break on first line
node --inspect-brk dist/main.js

# With ts-node
node --inspect -r ts-node/register src/main.ts
// In code
debugger; // Breakpoint

// Quick print
console.log({ variable }); // Shows name and value
console.table(arrayOfObjects); // Table format
console.trace('Called from'); // Stack trace

Python

# Start debugger
python -m pdb script.py

# Post-mortem on exception
python -m pdb -c continue script.py
# In code
breakpoint()  # Python 3.7+
import pdb; pdb.set_trace()  # Older Python

# Quick print
print(f"{variable=}")  # Python 3.8+ shows name and value

# Rich debugging
from rich import inspect
inspect(object, methods=True)

pdb Commands

Command Action
n Next line
s Step into
c Continue
l List code
p expr Print expression
pp expr Pretty print
w Where (stack)
q Quit

Go

# Start delve
dlv debug ./cmd/app

# Attach to running process
dlv attach <pid>

# Debug test
dlv test ./pkg/...
// Quick print
log.Printf("%+v", variable) // With field names
fmt.Printf("%#v\n", variable) // Go syntax representation

// Spew for complex structures
import "github.com/davecgh/go-spew/spew"
spew.Dump(variable)

Delve Commands

Command Action
break main.go:42 Set breakpoint
continue Continue
next Next line
step Step into
print var Print variable
goroutines List goroutines

VS Code Debug Config

// .vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Debug TypeScript",
      "program": "${workspaceFolder}/src/main.ts",
      "preLaunchTask": "tsc: build",
      "outFiles": ["${workspaceFolder}/dist/**/*.js"]
    },
    {
      "type": "python",
      "request": "launch",
      "name": "Debug Python",
      "program": "${workspaceFolder}/main.py",
      "console": "integratedTerminal"
    }
  ]
}

Quick Reference

Need Tool
Breakpoint in code debugger; / breakpoint()
Print with name console.log({x}) / print(f"{x=}")
Stack trace console.trace() / traceback.print_stack()
Inspect object console.dir(obj) / dir(obj)
Step through IDE debugger or CLI debugger