🐛 Lesson 15 of 40 Debugging Intermediate

Debugging Like a Pro

VS Code's built-in debugger works across Node.js, Python, Go, Rust, C++ and more. This lesson covers the full debugging workflow: breakpoints, stepping, watch expressions, and launch configs.

38% complete

1The Debug View

Press Ctrl+Shift+D to open the Run & Debug view. From here you can create a launch.json, start/stop debugging sessions, and inspect the Call Stack, Variables, Watch, and Breakpoints panels.

2Breakpoints

Click the gutter (left of line numbers) to add a breakpoint. Right-click for advanced options:

  • Conditional breakpoint — only breaks when an expression is true
  • Hit count breakpoint — breaks after N hits
  • Logpoint — logs a message without stopping (great for production-like debugging)

3Stepping Controls

Debug controls
F5           Continue / Start
F10          Step over
F11          Step into
Shift+F11    Step out
Shift+F5     Stop
Ctrl+Shift+F5 Restart

4The Debug Console & REPL

While paused, use the Debug Console as a live REPL. Evaluate expressions, call functions, and mutate variables on the fly. This is much faster than adding print statements and re-running.

5launch.json Configuration

A launch.json file in .vscode/ defines named debug configurations. You can have multiple — one for the dev server, one for unit tests, one for a specific script:

.vscode/launch.json
{
  "configurations": [{
    "type": "node",
    "request": "launch",
    "name": "Dev Server",
    "runtimeExecutable": "npm",
    "runtimeArgs": ["run","dev"]
  }]
}

All 40 Lessons
Pick any lesson to jump straight to it.
L01
Getting Started with VS Code
FoundationBeginner
L02
The VS Code Interface & Layout
FoundationBeginner
L03
Installing & Managing Extensions
ExtensionsBeginner
L04
Keyboard Shortcuts & Command Palette
ProductivityBeginner
L05
Settings, Themes & Customization
CustomizationBeginner
L06
IntelliSense & Code Completion
Editor FeaturesBeginner
L07
Integrated Terminal Mastery
ProductivityBeginner
L08
Search, Find & Replace Across Files
Editor FeaturesBeginner
L09
Git & Source Control with VS Code
Version ControlBeginner
L10
Snippets & Emmet Abbreviations
ProductivityBeginner
L11
GitHub Copilot — Getting Started
AI & CopilotIntermediate
L12
Copilot Chat & Inline Ask
AI & CopilotIntermediate
L13
JavaScript & TypeScript Development
LanguagesIntermediate
L14
Python Development in VS Code
LanguagesIntermediate
L15
Debugging Like a Pro
DebuggingIntermediate
L16
Linting, Formatting & ESLint
Code QualityIntermediate
L17
Multi-Cursor Editing & Refactoring
Editor FeaturesIntermediate
L18
Workspaces & Multi-Root Projects
WorkspaceIntermediate
L19
Tasks, Build Systems & npm Scripts
WorkflowIntermediate
L20
Testing with Jest, Vitest & Pytest
TestingIntermediate
L21
React Development Workflow
Web DevIntermediate
L22
Node.js & Express in VS Code
BackendIntermediate
L23
Docker & Dev Containers
DevOpsIntermediate
L24
Live Share — Real-Time Collaboration
CollaborationIntermediate
L25
Jupyter Notebooks in VS Code
Data ScienceIntermediate
L26
REST Client & API Testing
API DevIntermediate
L27
SSH Remote Development
Remote DevIntermediate
L28
WSL 2 Integration on Windows
Remote DevIntermediate
L29
Advanced Debugging: Breakpoints & Watch
DebuggingAdvanced
L30
Copilot Agent Mode — Agentic Workflows
AI & CopilotAdvanced
L31
Profile & Performance Optimisation
PerformanceAdvanced
L32
GitHub Actions & CI/CD Integration
DevOpsAdvanced
L33
Custom Keybindings & Key Maps
CustomizationAdvanced
L34
Settings Sync & Dotfiles Management
WorkflowAdvanced
L35
Language Server Protocol (LSP) Explained
InternalsAdvanced
L36
Rust Development in VS Code
LanguagesAdvanced
L37
Go Development in VS Code
LanguagesAdvanced
L38
GitHub Codespaces & vscode.dev
Remote DevExpert
L39
Writing Your First VS Code Extension
Extension DevExpert
L40
Pro VS Code Workflow & Mastery
MasteryExpert