CINXE.COM
Debugging C# in Visual Studio Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="awa-expId" content="vscw_aaflight1016_control:103441;" /> <meta name="awa-env" content="prod" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="google-site-verification" content="hNs7DXrTySP_X-0P_AC0WulAXvUwgSXEmgfcO2r79dw" /> <!-- Twitter and Facebook OpenGraph Metadata--> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@code" /> <meta name="description" content="See how you can run and debug your C# source code" /> <meta name="keywords" content="" /> <meta name="ms.prod" content="vs-code" /> <meta name="ms.TOCTitle" content="Run and Debug" /> <meta name="ms.ContentId" content="f4507411-1780-4b80-8816-657c09585c19" /> <meta name="ms.date" content="6/6/2023" /> <meta name="ms.topic" content="conceptual" /> <!-- Twitter and Facebook OpenGraph Metadata--> <meta name="twitter:card" content="summary_large_image" /> <meta property="og:url" content="https://code.visualstudio.com/docs/csharp/debugging" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Debugging C# in Visual Studio Code" /> <meta property="og:description" content="See how you can run and debug your C# source code" /> <meta property="og:image" content="https://code.visualstudio.com/opengraphimg/opengraph-docs.png" /> <link rel="shortcut icon" href="/favicon.ico" sizes="128x128" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <title>Debugging C# in Visual Studio Code</title> <link rel="stylesheet" href="/vendor/bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="/dist/v2/style.css"> <script src="https://consentdeliveryfd.azurefd.net/mscc/lib/v2/wcp-consent.js"></script> <script type="text/javascript" src="https://js.monitor.azure.com/scripts/c/ms.analytics-web-4.min.js"></script> <script type="text/javascript"> // Leave as var; siteConsent is initialized and referenced elsewhere. var siteConsent = null; const GPC_DataSharingOptIn = false; WcpConsent.onInitCallback(function () { window.appInsights = new oneDS.ApplicationInsights(); window.appInsights.initialize({ instrumentationKey: "1a3eb3104447440391ad5f2a6ee06a0a-62879566-bc58-4741-9650-302bf2af703f-7103", propertyConfiguration: { userConsented: false, gpcDataSharingOptIn: false, callback: { userConsentDetails: siteConsent ? siteConsent.getConsent : undefined }, }, cookieCfg: { ignoreCookies: ["MSCC"] }, webAnalyticsConfiguration:{ // Web Analytics Plugin configuration urlCollectQuery: true, urlCollectHash: true, autoCapture: { scroll: true, pageView: true, onLoad: true, onUnload: true, click: true, resize: true, jsError: true } } }, []); window.appInsights.getPropertyManager().getPropertiesContext().web.gpcDataSharingOptIn = GPC_DataSharingOptIn; }); </script> <link rel="alternate" type="application/atom+xml" title="RSS Feed for code.visualstudio.com" href="/feed.xml" /> </head> <body > <!-- Setting theme here to avoid FOUC --> <script> function setTheme(themeName) { if (themeName === 'dark') { document.documentElement.removeAttribute('data-theme'); // dark is default, so no data-theme attribute needed } if (themeName === 'light') { document.documentElement.setAttribute('data-theme', themeName); } return; } // Determine initial theme: user preference or system preference let theme = localStorage.getItem('theme') || (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); setTheme(theme); // Apply the initial theme // Listen for changes in the system theme preference window.matchMedia('(prefers-color-scheme: dark)').addListener(e => { if (!localStorage.getItem('theme')) { // Only if no user preference is saved setTheme(e.matches ? 'dark' : 'light'); } }); </script> <div id="main"> <div class="navbar-fixed-container"> <div class="navbar navbar-inverse navbar-fixed-top " data-spy="affix" data-offset-top="1"> <div id='cookie-banner'></div> <nav role="navigation" aria-label="Top Level"> <div class="container"> <div class="nav navbar-header"> <a class="navbar-brand" href="/"><span>Visual Studio Code</span></a> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse" aria-label="Expand and Collapse Menu"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-left"> <li class="active" ><a id="nav-docs" href="/docs">Docs</a></li> <li ><a id="nav-updates" href="/updates">Updates</a></li> <li ><a id="nav-blogs" href="/blogs">Blog</a></li> <li ><a id="nav-extend" href="/api">API</a></li> <li><a href="https://marketplace.visualstudio.com/VSCode" target="_blank" rel="noopener" id="nav-extensions">Extensions</a></li> <li ><a id="nav-faqs" href="/docs/supporting/faq">FAQ</a></li> <li class='search visible-xs visible-sm' ><a href="/Search">Search</a></li> <li ><a id="nav-copilot" href="/docs/copilot/overview">GitHub Copilot</a></li> </ul> </ul> <ul class="nav navbar-nav navbar-right" role="presentation"> <li> <button type="button" class="theme-switch" id="theme-toggle"> <img class="theme-icon-light" src="/assets/icons/theme-light.svg" alt="Switch to the dark theme" /> <img class="theme-icon-dark" src="/assets/icons/theme-dark.svg" alt="Switch to the light theme" /> </button> </li> <li> <a href="/Search" title="Search" class="btn search-btn" id="nav-search"> <img class="search-icon-light" src="/assets/icons/search.svg" width="16px" height="16px" alt="Search" /> <img class="search-icon-dark" src="/assets/icons/search-dark.svg" width="16px" height="16px" alt="Search" /> </a> </li> <li class="search" role="presentation"> <form class="nav-search search-form" role="search" aria-label="Search"> <div class="input-group" role="presentation"> <input type="text" name="q" class="search-box form-control" placeholder="Search Docs" aria-label="Search text"/> <span class="input-group-btn"> <button tabindex="0" class="btn" type="submit" aria-label="Search"> <img class="search-icon-dark" src="/assets/icons/search-dark.svg" alt="Search" /> <img class="search-icon-light" src="/assets/icons/search.svg" alt="Search" /> </button> </span> </div> </form> </li> <!-- this was hiden in the home and download page, keeping it for now --> <li><a class="link-button" href="/Download" id="nav-download"> <span>Download</span></a></li> </ul> </div> </div> </nav> </div> </div> <div class="updates-banner "> <div class="container"> <p class="message"><a href="/updates" id="banner-link-updates">Version 1.95</a> is now available! Read about the new features and fixes from October.</p> </div> <div tabindex="0" role="button" title="Dismiss this update" class="dismiss-btn" id="banner-dismiss-btn"><span class="sr-only">Dismiss this update</span><span aria-hidden="true" class="glyph-icon"></span></div> </div> <!-- This div wraps around the entire site --> <!-- The body itself should already have a main tag --> <div id="main-content"> <script> function closeReportIssue() { var element = document.getElementById('surveypopup'); element.parentElement.removeChild(element); } function reportIssue(tutorial, page) { var div = document.createElement('div'); div.innerHTML = '<div id="surveypopup" class="overlay visible"><div class="surveypopup"><div id="surveytitle">Tell us more<a href="javascript:void(0)" onclick="closeReportIssue()">X</a></div><div id="surveydiv"><iframe frameBorder="0" scrolling="0" src="https://www.research.net/r/PWZWZ52?tutorial=' + tutorial + '&step=' + page + '"></iframe></div></div></div>'; document.body.appendChild(div.children[0]); } </script> <div class="container body-content docs"> <div class="row"> <!-- left nav --> <div class="col-xs-12 col-md-2 docs-navbar-container"> <nav id="docs-navbar" aria-label="Topics" class="docs-nav visible-md visible-lg"> <ul class="nav" id="main-nav"> <li > <a class="docs-home" href="/docs" >Overview</a> </li> <li class="panel collapsed"> <a class="area" role="button" href="#setup-articles" data-parent="#main-nav" data-toggle="collapse">Setup</a> <ul id="setup-articles" class="collapse "> <li > <a href="/docs/setup/setup-overview" >Overview</a> </li> <li > <a href="/docs/setup/linux" >Linux</a> </li> <li > <a href="/docs/setup/mac" >macOS</a> </li> <li > <a href="/docs/setup/windows" >Windows</a> </li> <li > <a href="/docs/setup/raspberry-pi" >Raspberry Pi</a> </li> <li > <a href="/docs/setup/network" >Network</a> </li> <li > <a href="/docs/setup/additional-components" >Additional Components</a> </li> <li > <a href="/docs/setup/enterprise" >Enterprise</a> </li> <li > <a href="/docs/setup/uninstall" >Uninstall</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#getstarted-articles" data-parent="#main-nav" data-toggle="collapse">Get Started</a> <ul id="getstarted-articles" class="collapse "> <li > <a href="/docs/getstarted/getting-started" >Tutorial</a> </li> <li > <a href="/docs/getstarted/introvideos" >Intro Videos</a> </li> <li > <a href="/docs/getstarted/tips-and-tricks" >Tips and Tricks</a> </li> <li > <a href="/docs/getstarted/userinterface" >User Interface</a> </li> <li > <a href="/docs/getstarted/themes" >Themes</a> </li> <li > <a href="/docs/getstarted/settings" >Settings</a> </li> <li > <a href="/docs/getstarted/keybindings" >Key Bindings</a> </li> <li > <a href="/docs/getstarted/locales" >Display Language</a> </li> <li > <a href="/docs/getstarted/telemetry" >Telemetry</a> </li> <li > <a href="/docs/getstarted/educators-and-students" >Educators & Students</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#editor-articles" data-parent="#main-nav" data-toggle="collapse">User Guide</a> <ul id="editor-articles" class="collapse "> <li > <a href="/docs/editor/codebasics" >Basic Editing</a> </li> <li > <a href="/docs/editor/extension-marketplace" >Extension Marketplace</a> </li> <li > <a href="/docs/editor/intellisense" >IntelliSense</a> </li> <li > <a href="/docs/editor/editingevolved" >Code Navigation</a> </li> <li > <a href="/docs/editor/refactoring" >Refactoring</a> </li> <li > <a href="/docs/editor/debugging" >Debugging</a> </li> <li > <a href="/docs/editor/testing" >Testing</a> </li> <li > <a href="/docs/editor/vscode-web" >VS Code for the Web</a> </li> <li > <a href="/docs/editor/tasks" >Tasks</a> </li> <li > <a href="/docs/editor/profiles" >Profiles</a> </li> <li > <a href="/docs/editor/settings-sync" >Settings Sync</a> </li> <li > <a href="/docs/editor/userdefinedsnippets" >Snippets</a> </li> <li > <a href="/docs/editor/emmet" >Emmet</a> </li> <li > <a href="/docs/editor/command-line" >Command Line Interface</a> </li> <li > <a href="/docs/editor/workspaces" >Workspaces</a> </li> <li > <a href="/docs/editor/workspace-trust" >Workspace Trust</a> </li> <li > <a href="/docs/editor/multi-root-workspaces" >Multi-root Workspaces</a> </li> <li > <a href="/docs/editor/accessibility" >Accessibility</a> </li> <li > <a href="/docs/editor/voice" >Voice Interactions</a> </li> <li > <a href="/docs/editor/custom-layout" >Custom Layout</a> </li> <li > <a href="/docs/editor/port-forwarding" >Port Forwarding</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#sourcecontrol-articles" data-parent="#main-nav" data-toggle="collapse">Source Control</a> <ul id="sourcecontrol-articles" class="collapse "> <li > <a href="/docs/sourcecontrol/overview" >Overview</a> </li> <li > <a href="/docs/sourcecontrol/intro-to-git" >Introduction to Git</a> </li> <li > <a href="/docs/sourcecontrol/github" >Collaborate on GitHub</a> </li> <li > <a href="/docs/sourcecontrol/faq" >FAQ</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#terminal-articles" data-parent="#main-nav" data-toggle="collapse">Terminal</a> <ul id="terminal-articles" class="collapse "> <li > <a href="/docs/terminal/getting-started" >Getting Started Tutorial</a> </li> <li > <a href="/docs/terminal/basics" >Terminal Basics</a> </li> <li > <a href="/docs/terminal/profiles" >Terminal Profiles</a> </li> <li > <a href="/docs/terminal/shell-integration" >Shell Integration</a> </li> <li > <a href="/docs/terminal/appearance" >Appearance</a> </li> <li > <a href="/docs/terminal/advanced" >Advanced</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#copilot-articles" data-parent="#main-nav" data-toggle="collapse">GitHub Copilot</a> <ul id="copilot-articles" class="collapse "> <li > <a href="/docs/copilot/overview" >Overview</a> </li> <li > <a href="/docs/copilot/copilot-vscode-features" >Copilot Cheat Sheet</a> </li> <li > <a href="/docs/copilot/setup" >Setup</a> </li> <li > <a href="/docs/copilot/getting-started" >Quickstart</a> </li> <li > <a href="/docs/copilot/ai-powered-suggestions" >Code Completions</a> </li> <li > <a href="/docs/copilot/copilot-chat" >Copilot Chat</a> </li> <li > <a href="/docs/copilot/getting-started-chat" >Copilot Chat Tutorial</a> </li> <li > <a href="/docs/copilot/copilot-edits" >Copilot Edits</a> </li> <li > <a href="/docs/copilot/prompt-crafting" >Best Practices</a> </li> <li > <a href="/docs/copilot/workspace-context" >Workspace Context</a> </li> <li > <a href="/docs/copilot/copilot-customization" >Customizing Copilot</a> </li> <li > <a href="/docs/copilot/copilot-extensibility-overview" >Copilot Extensibility</a> </li> <li > <a href="/docs/copilot/copilot-settings" >Settings Reference</a> </li> <li > <a href="/docs/copilot/faq" >FAQ</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#languages-articles" data-parent="#main-nav" data-toggle="collapse">Languages</a> <ul id="languages-articles" class="collapse "> <li > <a href="/docs/languages/overview" >Overview</a> </li> <li > <a href="/docs/languages/javascript" >JavaScript</a> </li> <li > <a href="/docs/languages/json" >JSON</a> </li> <li > <a href="/docs/languages/html" >HTML</a> </li> <li > <a href="/docs/languages/css" >CSS, SCSS and Less</a> </li> <li > <a href="/docs/languages/typescript" >TypeScript</a> </li> <li > <a href="/docs/languages/markdown" >Markdown</a> </li> <li > <a href="/docs/languages/powershell" >PowerShell</a> </li> <li > <a href="/docs/languages/cpp" >C++</a> </li> <li > <a href="/docs/languages/java" >Java</a> </li> <li > <a href="/docs/languages/php" >PHP</a> </li> <li > <a href="/docs/languages/python" >Python</a> </li> <li > <a href="/docs/languages/julia" >Julia</a> </li> <li > <a href="/docs/languages/r" >R</a> </li> <li > <a href="/docs/languages/ruby" >Ruby</a> </li> <li > <a href="/docs/languages/rust" >Rust</a> </li> <li > <a href="/docs/languages/go" >Go</a> </li> <li > <a href="/docs/languages/tsql" >T-SQL</a> </li> <li > <a href="/docs/languages/csharp" >C#</a> </li> <li > <a href="/docs/languages/dotnet" >.NET</a> </li> <li > <a href="/docs/languages/polyglot" >Polyglot</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#nodejs-articles" data-parent="#main-nav" data-toggle="collapse">Node.js / JavaScript</a> <ul id="nodejs-articles" class="collapse "> <li > <a href="/docs/nodejs/working-with-javascript" >Working with JavaScript</a> </li> <li > <a href="/docs/nodejs/nodejs-tutorial" >Node.js Tutorial</a> </li> <li > <a href="/docs/nodejs/nodejs-debugging" >Node.js Debugging</a> </li> <li > <a href="/docs/nodejs/nodejs-deployment" >Deploy Node.js Apps</a> </li> <li > <a href="/docs/nodejs/browser-debugging" >Browser Debugging</a> </li> <li > <a href="/docs/nodejs/angular-tutorial" >Angular Tutorial</a> </li> <li > <a href="/docs/nodejs/reactjs-tutorial" >React Tutorial</a> </li> <li > <a href="/docs/nodejs/vuejs-tutorial" >Vue Tutorial</a> </li> <li > <a href="/docs/nodejs/debugging-recipes" >Debugging Recipes</a> </li> <li > <a href="/docs/nodejs/profiling" >Performance Profiling</a> </li> <li > <a href="/docs/nodejs/extensions" >Extensions</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#typescript-articles" data-parent="#main-nav" data-toggle="collapse">TypeScript</a> <ul id="typescript-articles" class="collapse "> <li > <a href="/docs/typescript/typescript-tutorial" >Tutorial</a> </li> <li > <a href="/docs/typescript/typescript-compiling" >Compiling</a> </li> <li > <a href="/docs/typescript/typescript-editing" >Editing</a> </li> <li > <a href="/docs/typescript/typescript-refactoring" >Refactoring</a> </li> <li > <a href="/docs/typescript/typescript-debugging" >Debugging</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#python-articles" data-parent="#main-nav" data-toggle="collapse">Python</a> <ul id="python-articles" class="collapse "> <li > <a href="/docs/python/python-quick-start" >Quick Start</a> </li> <li > <a href="/docs/python/python-tutorial" >Tutorial</a> </li> <li > <a href="/docs/python/run" >Run Python Code</a> </li> <li > <a href="/docs/python/editing" >Editing Code</a> </li> <li > <a href="/docs/python/linting" >Linting</a> </li> <li > <a href="/docs/python/formatting" >Formatting</a> </li> <li > <a href="/docs/python/debugging" >Debugging</a> </li> <li > <a href="/docs/python/environments" >Environments</a> </li> <li > <a href="/docs/python/testing" >Testing</a> </li> <li > <a href="/docs/python/jupyter-support-py" >Python Interactive</a> </li> <li > <a href="/docs/python/tutorial-django" >Django Tutorial</a> </li> <li > <a href="/docs/python/tutorial-fastapi" >FastAPI Tutorial</a> </li> <li > <a href="/docs/python/tutorial-flask" >Flask Tutorial</a> </li> <li > <a href="/docs/python/tutorial-create-containers" >Create containers</a> </li> <li > <a href="/docs/python/python-on-azure" >Deploy Python Apps</a> </li> <li > <a href="/docs/python/python-web" >Python in the Web</a> </li> <li > <a href="/docs/python/settings-reference" >Settings Reference</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#java-articles" data-parent="#main-nav" data-toggle="collapse">Java</a> <ul id="java-articles" class="collapse "> <li > <a href="/docs/java/java-tutorial" >Getting Started</a> </li> <li > <a href="/docs/java/java-editing" >Navigate and Edit</a> </li> <li > <a href="/docs/java/java-refactoring" >Refactoring</a> </li> <li > <a href="/docs/java/java-linting" >Formatting and Linting</a> </li> <li > <a href="/docs/java/java-project" >Project Management</a> </li> <li > <a href="/docs/java/java-build" >Build Tools</a> </li> <li > <a href="/docs/java/java-debugging" >Run and Debug</a> </li> <li > <a href="/docs/java/java-testing" >Testing</a> </li> <li > <a href="/docs/java/java-spring-boot" >Spring Boot</a> </li> <li > <a href="/docs/java/java-tomcat-jetty" >Application Servers</a> </li> <li > <a href="/docs/java/java-on-azure" >Deploy Java Apps</a> </li> <li > <a href="/docs/java/java-gui" >GUI Applications</a> </li> <li > <a href="/docs/java/extensions" >Extensions</a> </li> <li > <a href="/docs/java/java-faq" >FAQ</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#cpp-articles" data-parent="#main-nav" data-toggle="collapse">C++</a> <ul id="cpp-articles" class="collapse "> <li > <a href="/docs/cpp/introvideos-cpp" >Intro Videos</a> </li> <li > <a href="/docs/cpp/config-linux" >GCC on Linux</a> </li> <li > <a href="/docs/cpp/config-mingw" >GCC on Windows</a> </li> <li > <a href="/docs/cpp/config-wsl" >GCC on Windows Subsystem for Linux</a> </li> <li > <a href="/docs/cpp/config-clang-mac" >Clang on macOS</a> </li> <li > <a href="/docs/cpp/config-msvc" >Microsoft C++ on Windows</a> </li> <li > <a href="/docs/cpp/build-with-cmake" >Build with CMake</a> </li> <li > <a href="/docs/cpp/cmake-linux" >CMake Tools on Linux</a> </li> <li > <a href="/docs/cpp/cmake-quickstart" >CMake Quick Start</a> </li> <li > <a href="/docs/cpp/cpp-ide" >Editing and Navigating</a> </li> <li > <a href="/docs/cpp/cpp-debug" >Debugging</a> </li> <li > <a href="/docs/cpp/cpp-refactoring" >Refactoring</a> </li> <li > <a href="/docs/cpp/launch-json-reference" >Configure debugging</a> </li> <li > <a href="/docs/cpp/customize-default-settings-cpp" >Settings</a> </li> <li > <a href="/docs/cpp/configure-intellisense" >Configure IntelliSense</a> </li> <li > <a href="/docs/cpp/configure-intellisense-crosscompilation" >Configure IntelliSense for cross-compiling</a> </li> <li > <a href="/docs/cpp/faq-cpp" >FAQ</a> </li> </ul> </li> <li class="panel active expanded"> <a class="area" role="button" href="#csharp-articles" data-parent="#main-nav" data-toggle="collapse">C#</a> <ul id="csharp-articles" class="collapse in"> <li > <a href="/docs/csharp/introvideos-csharp" >Intro Videos</a> </li> <li > <a href="/docs/csharp/get-started" >Get Started</a> </li> <li > <a href="/docs/csharp/navigate-edit" >Navigate and Edit</a> </li> <li > <a href="/docs/csharp/intellicode" >IntelliCode</a> </li> <li > <a href="/docs/csharp/refactoring" >Refactoring</a> </li> <li > <a href="/docs/csharp/formatting-linting" >Formatting and Linting</a> </li> <li > <a href="/docs/csharp/project-management" >Project Management</a> </li> <li > <a href="/docs/csharp/build-tools" >Build Tools</a> </li> <li > <a href="/docs/csharp/package-management" >Package Management</a> </li> <li class="active"> <a href="/docs/csharp/debugging" aria-label="Current Page: Run and Debug">Run and Debug</a> </li> <li > <a href="/docs/csharp/testing" >Testing</a> </li> <li > <a href="/docs/csharp/cs-dev-kit-faq" >FAQ</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#containers-articles" data-parent="#main-nav" data-toggle="collapse">Docker</a> <ul id="containers-articles" class="collapse "> <li > <a href="/docs/containers/overview" >Overview</a> </li> <li > <a href="/docs/containers/quickstart-node" >Node.js</a> </li> <li > <a href="/docs/containers/quickstart-python" >Python</a> </li> <li > <a href="/docs/containers/quickstart-aspnet-core" >ASP.NET Core</a> </li> <li > <a href="/docs/containers/debug-common" >Debug</a> </li> <li > <a href="/docs/containers/docker-compose" >Docker Compose</a> </li> <li > <a href="/docs/containers/quickstart-container-registries" >Registries</a> </li> <li > <a href="/docs/containers/app-service" >Deploy to Azure</a> </li> <li > <a href="/docs/containers/choosing-dev-environment" >Choose a dev environment</a> </li> <li > <a href="/docs/containers/reference" >Customize</a> </li> <li > <a href="/docs/containers/bridge-to-kubernetes" >Develop with Kubernetes</a> </li> <li > <a href="/docs/containers/troubleshooting" >Tips and Tricks</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#datascience-articles" data-parent="#main-nav" data-toggle="collapse">Data Science</a> <ul id="datascience-articles" class="collapse "> <li > <a href="/docs/datascience/overview" >Overview</a> </li> <li > <a href="/docs/datascience/jupyter-notebooks" >Jupyter Notebooks</a> </li> <li > <a href="/docs/datascience/data-science-tutorial" >Data Science Tutorial</a> </li> <li > <a href="/docs/datascience/python-interactive" >Python Interactive</a> </li> <li > <a href="/docs/datascience/data-wrangler-quick-start" >Data Wrangler Quick Start</a> </li> <li > <a href="/docs/datascience/data-wrangler" >Data Wrangler</a> </li> <li > <a href="/docs/datascience/pytorch-support" >PyTorch Support</a> </li> <li > <a href="/docs/datascience/azure-machine-learning" >Azure Machine Learning</a> </li> <li > <a href="/docs/datascience/jupyter-kernel-management" >Manage Jupyter Kernels</a> </li> <li > <a href="/docs/datascience/notebooks-web" >Jupyter Notebooks on the web</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#azure-articles" data-parent="#main-nav" data-toggle="collapse">Azure</a> <ul id="azure-articles" class="collapse "> <li > <a href="/docs/azure/overview" >Overview</a> </li> <li > <a href="/docs/azure/gettingstarted" >Getting Started</a> </li> <li > <a href="/docs/azure/deployment" >Deployment</a> </li> <li > <a href="/docs/azure/docker" >Docker</a> </li> <li > <a href="/docs/azure/aksextensions" >Azure Kubernetes Service</a> </li> <li > <a href="/docs/azure/kubernetes" >Kubernetes</a> </li> <li > <a href="/docs/azure/mongodb" >MongoDB</a> </li> <li > <a href="/docs/azure/remote-debugging" >Remote Debugging for Node.js</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#remote-articles" data-parent="#main-nav" data-toggle="collapse">Remote</a> <ul id="remote-articles" class="collapse "> <li > <a href="/docs/remote/remote-overview" >Overview</a> </li> <li > <a href="/docs/remote/ssh" >SSH</a> </li> <li > <a href="/docs/remote/dev-containers" >Dev Containers</a> </li> <li > <a href="/docs/remote/wsl" >Windows Subsystem for Linux</a> </li> <li > <a href="/docs/remote/codespaces" >GitHub Codespaces</a> </li> <li > <a href="/docs/remote/vscode-server" >VS Code Server</a> </li> <li > <a href="/docs/remote/tunnels" >Tunnels</a> </li> <li > <a href="/docs/remote/ssh-tutorial" >SSH Tutorial</a> </li> <li > <a href="/docs/remote/wsl-tutorial" >WSL Tutorial</a> </li> <li > <a href="/docs/remote/troubleshooting" >Tips and Tricks</a> </li> <li > <a href="/docs/remote/faq" >FAQ</a> </li> </ul> </li> <li class="panel collapsed"> <a class="area" role="button" href="#devcontainers-articles" data-parent="#main-nav" data-toggle="collapse">Dev Containers</a> <ul id="devcontainers-articles" class="collapse "> <li > <a href="/docs/devcontainers/containers" >Overview</a> </li> <li > <a href="/docs/devcontainers/tutorial" >Tutorial</a> </li> <li > <a href="/docs/devcontainers/attach-container" >Attach to Container</a> </li> <li > <a href="/docs/devcontainers/create-dev-container" >Create a Dev Container</a> </li> <li > <a href="/docs/devcontainers/containers-advanced" >Advanced Containers</a> </li> <li > <a href="/docs/devcontainers/devcontainerjson-reference" >devcontainer.json</a> </li> <li > <a href="/docs/devcontainers/devcontainer-cli" >Dev Container CLI</a> </li> <li > <a href="/docs/devcontainers/tips-and-tricks" >Tips and Tricks</a> </li> <li > <a href="/docs/devcontainers/faq" >FAQ</a> </li> </ul> </li> </ul> </nav> <nav id="small-nav" aria-label="Topics" class="docs-nav hidden-md hidden-lg"> <label class="faux-h4" for="small-nav-dropdown">Topics</label> <select id="small-nav-dropdown" aria-label="topics"> <option value="/docs" >Overview</option> <optgroup label="Setup"> <option value="/docs/setup/setup-overview" >Overview</option> <option value="/docs/setup/linux" >Linux</option> <option value="/docs/setup/mac" >macOS</option> <option value="/docs/setup/windows" >Windows</option> <option value="/docs/setup/raspberry-pi" >Raspberry Pi</option> <option value="/docs/setup/network" >Network</option> <option value="/docs/setup/additional-components" >Additional Components</option> <option value="/docs/setup/enterprise" >Enterprise</option> <option value="/docs/setup/uninstall" >Uninstall</option> </optgroup> <optgroup label="Get Started"> <option value="/docs/getstarted/getting-started" >Tutorial</option> <option value="/docs/getstarted/introvideos" >Intro Videos</option> <option value="/docs/getstarted/tips-and-tricks" >Tips and Tricks</option> <option value="/docs/getstarted/userinterface" >User Interface</option> <option value="/docs/getstarted/themes" >Themes</option> <option value="/docs/getstarted/settings" >Settings</option> <option value="/docs/getstarted/keybindings" >Key Bindings</option> <option value="/docs/getstarted/locales" >Display Language</option> <option value="/docs/getstarted/telemetry" >Telemetry</option> <option value="/docs/getstarted/educators-and-students" >Educators & Students</option> </optgroup> <optgroup label="User Guide"> <option value="/docs/editor/codebasics" >Basic Editing</option> <option value="/docs/editor/extension-marketplace" >Extension Marketplace</option> <option value="/docs/editor/intellisense" >IntelliSense</option> <option value="/docs/editor/editingevolved" >Code Navigation</option> <option value="/docs/editor/refactoring" >Refactoring</option> <option value="/docs/editor/debugging" >Debugging</option> <option value="/docs/editor/testing" >Testing</option> <option value="/docs/editor/vscode-web" >VS Code for the Web</option> <option value="/docs/editor/tasks" >Tasks</option> <option value="/docs/editor/profiles" >Profiles</option> <option value="/docs/editor/settings-sync" >Settings Sync</option> <option value="/docs/editor/userdefinedsnippets" >Snippets</option> <option value="/docs/editor/emmet" >Emmet</option> <option value="/docs/editor/command-line" >Command Line Interface</option> <option value="/docs/editor/workspaces" >Workspaces</option> <option value="/docs/editor/workspace-trust" >Workspace Trust</option> <option value="/docs/editor/multi-root-workspaces" >Multi-root Workspaces</option> <option value="/docs/editor/accessibility" >Accessibility</option> <option value="/docs/editor/voice" >Voice Interactions</option> <option value="/docs/editor/custom-layout" >Custom Layout</option> <option value="/docs/editor/port-forwarding" >Port Forwarding</option> </optgroup> <optgroup label="Source Control"> <option value="/docs/sourcecontrol/overview" >Overview</option> <option value="/docs/sourcecontrol/intro-to-git" >Introduction to Git</option> <option value="/docs/sourcecontrol/github" >Collaborate on GitHub</option> <option value="/docs/sourcecontrol/faq" >FAQ</option> </optgroup> <optgroup label="Terminal"> <option value="/docs/terminal/getting-started" >Getting Started Tutorial</option> <option value="/docs/terminal/basics" >Terminal Basics</option> <option value="/docs/terminal/profiles" >Terminal Profiles</option> <option value="/docs/terminal/shell-integration" >Shell Integration</option> <option value="/docs/terminal/appearance" >Appearance</option> <option value="/docs/terminal/advanced" >Advanced</option> </optgroup> <optgroup label="GitHub Copilot"> <option value="/docs/copilot/overview" >Overview</option> <option value="/docs/copilot/copilot-vscode-features" >Copilot Cheat Sheet</option> <option value="/docs/copilot/setup" >Setup</option> <option value="/docs/copilot/getting-started" >Quickstart</option> <option value="/docs/copilot/ai-powered-suggestions" >Code Completions</option> <option value="/docs/copilot/copilot-chat" >Copilot Chat</option> <option value="/docs/copilot/getting-started-chat" >Copilot Chat Tutorial</option> <option value="/docs/copilot/copilot-edits" >Copilot Edits</option> <option value="/docs/copilot/prompt-crafting" >Best Practices</option> <option value="/docs/copilot/workspace-context" >Workspace Context</option> <option value="/docs/copilot/copilot-customization" >Customizing Copilot</option> <option value="/docs/copilot/copilot-extensibility-overview" >Copilot Extensibility</option> <option value="/docs/copilot/copilot-settings" >Settings Reference</option> <option value="/docs/copilot/faq" >FAQ</option> </optgroup> <optgroup label="Languages"> <option value="/docs/languages/overview" >Overview</option> <option value="/docs/languages/javascript" >JavaScript</option> <option value="/docs/languages/json" >JSON</option> <option value="/docs/languages/html" >HTML</option> <option value="/docs/languages/css" >CSS, SCSS and Less</option> <option value="/docs/languages/typescript" >TypeScript</option> <option value="/docs/languages/markdown" >Markdown</option> <option value="/docs/languages/powershell" >PowerShell</option> <option value="/docs/languages/cpp" >C++</option> <option value="/docs/languages/java" >Java</option> <option value="/docs/languages/php" >PHP</option> <option value="/docs/languages/python" >Python</option> <option value="/docs/languages/julia" >Julia</option> <option value="/docs/languages/r" >R</option> <option value="/docs/languages/ruby" >Ruby</option> <option value="/docs/languages/rust" >Rust</option> <option value="/docs/languages/go" >Go</option> <option value="/docs/languages/tsql" >T-SQL</option> <option value="/docs/languages/csharp" >C#</option> <option value="/docs/languages/dotnet" >.NET</option> <option value="/docs/languages/polyglot" >Polyglot</option> </optgroup> <optgroup label="Node.js / JavaScript"> <option value="/docs/nodejs/working-with-javascript" >Working with JavaScript</option> <option value="/docs/nodejs/nodejs-tutorial" >Node.js Tutorial</option> <option value="/docs/nodejs/nodejs-debugging" >Node.js Debugging</option> <option value="/docs/nodejs/nodejs-deployment" >Deploy Node.js Apps</option> <option value="/docs/nodejs/browser-debugging" >Browser Debugging</option> <option value="/docs/nodejs/angular-tutorial" >Angular Tutorial</option> <option value="/docs/nodejs/reactjs-tutorial" >React Tutorial</option> <option value="/docs/nodejs/vuejs-tutorial" >Vue Tutorial</option> <option value="/docs/nodejs/debugging-recipes" >Debugging Recipes</option> <option value="/docs/nodejs/profiling" >Performance Profiling</option> <option value="/docs/nodejs/extensions" >Extensions</option> </optgroup> <optgroup label="TypeScript"> <option value="/docs/typescript/typescript-tutorial" >Tutorial</option> <option value="/docs/typescript/typescript-compiling" >Compiling</option> <option value="/docs/typescript/typescript-editing" >Editing</option> <option value="/docs/typescript/typescript-refactoring" >Refactoring</option> <option value="/docs/typescript/typescript-debugging" >Debugging</option> </optgroup> <optgroup label="Python"> <option value="/docs/python/python-quick-start" >Quick Start</option> <option value="/docs/python/python-tutorial" >Tutorial</option> <option value="/docs/python/run" >Run Python Code</option> <option value="/docs/python/editing" >Editing Code</option> <option value="/docs/python/linting" >Linting</option> <option value="/docs/python/formatting" >Formatting</option> <option value="/docs/python/debugging" >Debugging</option> <option value="/docs/python/environments" >Environments</option> <option value="/docs/python/testing" >Testing</option> <option value="/docs/python/jupyter-support-py" >Python Interactive</option> <option value="/docs/python/tutorial-django" >Django Tutorial</option> <option value="/docs/python/tutorial-fastapi" >FastAPI Tutorial</option> <option value="/docs/python/tutorial-flask" >Flask Tutorial</option> <option value="/docs/python/tutorial-create-containers" >Create containers</option> <option value="/docs/python/python-on-azure" >Deploy Python Apps</option> <option value="/docs/python/python-web" >Python in the Web</option> <option value="/docs/python/settings-reference" >Settings Reference</option> </optgroup> <optgroup label="Java"> <option value="/docs/java/java-tutorial" >Getting Started</option> <option value="/docs/java/java-editing" >Navigate and Edit</option> <option value="/docs/java/java-refactoring" >Refactoring</option> <option value="/docs/java/java-linting" >Formatting and Linting</option> <option value="/docs/java/java-project" >Project Management</option> <option value="/docs/java/java-build" >Build Tools</option> <option value="/docs/java/java-debugging" >Run and Debug</option> <option value="/docs/java/java-testing" >Testing</option> <option value="/docs/java/java-spring-boot" >Spring Boot</option> <option value="/docs/java/java-tomcat-jetty" >Application Servers</option> <option value="/docs/java/java-on-azure" >Deploy Java Apps</option> <option value="/docs/java/java-gui" >GUI Applications</option> <option value="/docs/java/extensions" >Extensions</option> <option value="/docs/java/java-faq" >FAQ</option> </optgroup> <optgroup label="C++"> <option value="/docs/cpp/introvideos-cpp" >Intro Videos</option> <option value="/docs/cpp/config-linux" >GCC on Linux</option> <option value="/docs/cpp/config-mingw" >GCC on Windows</option> <option value="/docs/cpp/config-wsl" >GCC on Windows Subsystem for Linux</option> <option value="/docs/cpp/config-clang-mac" >Clang on macOS</option> <option value="/docs/cpp/config-msvc" >Microsoft C++ on Windows</option> <option value="/docs/cpp/build-with-cmake" >Build with CMake</option> <option value="/docs/cpp/cmake-linux" >CMake Tools on Linux</option> <option value="/docs/cpp/cmake-quickstart" >CMake Quick Start</option> <option value="/docs/cpp/cpp-ide" >Editing and Navigating</option> <option value="/docs/cpp/cpp-debug" >Debugging</option> <option value="/docs/cpp/cpp-refactoring" >Refactoring</option> <option value="/docs/cpp/launch-json-reference" >Configure debugging</option> <option value="/docs/cpp/customize-default-settings-cpp" >Settings</option> <option value="/docs/cpp/configure-intellisense" >Configure IntelliSense</option> <option value="/docs/cpp/configure-intellisense-crosscompilation" >Configure IntelliSense for cross-compiling</option> <option value="/docs/cpp/faq-cpp" >FAQ</option> </optgroup> <optgroup label="C#"> <option value="/docs/csharp/introvideos-csharp" >Intro Videos</option> <option value="/docs/csharp/get-started" >Get Started</option> <option value="/docs/csharp/navigate-edit" >Navigate and Edit</option> <option value="/docs/csharp/intellicode" >IntelliCode</option> <option value="/docs/csharp/refactoring" >Refactoring</option> <option value="/docs/csharp/formatting-linting" >Formatting and Linting</option> <option value="/docs/csharp/project-management" >Project Management</option> <option value="/docs/csharp/build-tools" >Build Tools</option> <option value="/docs/csharp/package-management" >Package Management</option> <option value="/docs/csharp/debugging" selected>Run and Debug</option> <option value="/docs/csharp/testing" >Testing</option> <option value="/docs/csharp/cs-dev-kit-faq" >FAQ</option> </optgroup> <optgroup label="Docker"> <option value="/docs/containers/overview" >Overview</option> <option value="/docs/containers/quickstart-node" >Node.js</option> <option value="/docs/containers/quickstart-python" >Python</option> <option value="/docs/containers/quickstart-aspnet-core" >ASP.NET Core</option> <option value="/docs/containers/debug-common" >Debug</option> <option value="/docs/containers/docker-compose" >Docker Compose</option> <option value="/docs/containers/quickstart-container-registries" >Registries</option> <option value="/docs/containers/app-service" >Deploy to Azure</option> <option value="/docs/containers/choosing-dev-environment" >Choose a dev environment</option> <option value="/docs/containers/reference" >Customize</option> <option value="/docs/containers/bridge-to-kubernetes" >Develop with Kubernetes</option> <option value="/docs/containers/troubleshooting" >Tips and Tricks</option> </optgroup> <optgroup label="Data Science"> <option value="/docs/datascience/overview" >Overview</option> <option value="/docs/datascience/jupyter-notebooks" >Jupyter Notebooks</option> <option value="/docs/datascience/data-science-tutorial" >Data Science Tutorial</option> <option value="/docs/datascience/python-interactive" >Python Interactive</option> <option value="/docs/datascience/data-wrangler-quick-start" >Data Wrangler Quick Start</option> <option value="/docs/datascience/data-wrangler" >Data Wrangler</option> <option value="/docs/datascience/pytorch-support" >PyTorch Support</option> <option value="/docs/datascience/azure-machine-learning" >Azure Machine Learning</option> <option value="/docs/datascience/jupyter-kernel-management" >Manage Jupyter Kernels</option> <option value="/docs/datascience/notebooks-web" >Jupyter Notebooks on the web</option> </optgroup> <optgroup label="Azure"> <option value="/docs/azure/overview" >Overview</option> <option value="/docs/azure/gettingstarted" >Getting Started</option> <option value="/docs/azure/deployment" >Deployment</option> <option value="/docs/azure/docker" >Docker</option> <option value="/docs/azure/aksextensions" >Azure Kubernetes Service</option> <option value="/docs/azure/kubernetes" >Kubernetes</option> <option value="/docs/azure/mongodb" >MongoDB</option> <option value="/docs/azure/remote-debugging" >Remote Debugging for Node.js</option> </optgroup> <optgroup label="Remote"> <option value="/docs/remote/remote-overview" >Overview</option> <option value="/docs/remote/ssh" >SSH</option> <option value="/docs/remote/dev-containers" >Dev Containers</option> <option value="/docs/remote/wsl" >Windows Subsystem for Linux</option> <option value="/docs/remote/codespaces" >GitHub Codespaces</option> <option value="/docs/remote/vscode-server" >VS Code Server</option> <option value="/docs/remote/tunnels" >Tunnels</option> <option value="/docs/remote/ssh-tutorial" >SSH Tutorial</option> <option value="/docs/remote/wsl-tutorial" >WSL Tutorial</option> <option value="/docs/remote/troubleshooting" >Tips and Tricks</option> <option value="/docs/remote/faq" >FAQ</option> </optgroup> <optgroup label="Dev Containers"> <option value="/docs/devcontainers/containers" >Overview</option> <option value="/docs/devcontainers/tutorial" >Tutorial</option> <option value="/docs/devcontainers/attach-container" >Attach to Container</option> <option value="/docs/devcontainers/create-dev-container" >Create a Dev Container</option> <option value="/docs/devcontainers/containers-advanced" >Advanced Containers</option> <option value="/docs/devcontainers/devcontainerjson-reference" >devcontainer.json</option> <option value="/docs/devcontainers/devcontainer-cli" >Dev Container CLI</option> <option value="/docs/devcontainers/tips-and-tricks" >Tips and Tricks</option> <option value="/docs/devcontainers/faq" >FAQ</option> </optgroup> </select> </nav> </div> <!-- small right nav --> <div class="col-xs-12 visible-xs"> <nav aria-labelledby="small-right-nav-label" class="small-nav docs-nav updates-nav"> <label class="faux-h4" for="small-right-nav-dropdown" id="small-right-nav-label">In this article</label> <select id="small-right-nav-dropdown" class="small-nav-select" aria-label="Sections"> <option value="#_run-and-debug">Run and Debug</option> <option value="#_attaching-to-a-process">Attaching to a process</option> <option value="#_configuration-options">Configuration options</option> <option value="#_breakpoints">Breakpoints</option> <option value="#_stopping-on-exceptions">Stopping on exceptions</option> <option value="#_expression-evaluation">Expression evaluation</option> <option value="#_hot-reload">Hot Reload</option> <option value="#_next-steps">Next steps</option> </select> </nav> </div> <!-- main content --> <main class="col-xs-12 col-sm-9 col-md-8 body"> <div class="edit-github pull-right"> <a href="https://vscode.dev/github/microsoft/vscode-docs/blob/main/docs/csharp/debugging.md" class="btn btn-default" title="Edit this document in vscode.dev"> <span class="glyphicon glyphicon-pencil"></span> <span class="hidden-xs">Edit</span> </a> </div> <h1>Debugging</h1> <p>You can debug C# applications in Visual Studio Code using the <a href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp" class="external-link" target="_blank">Microsoft C#</a> extension.</p> <h2 id="_run-and-debug" data-needslink="_run-and-debug">Run and Debug</h2> <p>The <a href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp" class="external-link" target="_blank">C#</a> extension along with <a href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit" class="external-link" target="_blank">C# Dev Kit</a> provides multiple ways to run and debug your C# application.</p> <p>To run and debug without C# Dev Kit, see <a href="https://aka.ms/vscode/coreclr/debug" class="external-link" target="_blank">Microsoft C# extension's GitHub page</a> for documentation.</p> <h3 id="_debug-with-f5" data-needslink="_debug-with-f5">Debug with F5</h3> <p>With the C# Dev Kit extension installed and no debug configurations available to select in the Debug view, you can start debugging your project by having a <code>.cs</code> file opened and then pressing <span class="dynamic-keybinding" data-commandId="workbench.action.debug.start" data-osx="F5" data-win="F5" data-linux="F5"><span class="keybinding">F5</span></span>. The debugger will automatically find your project and start debugging. If you have multiple projects, it will prompt for which project you would like to start debugging.</p> <p>You can also start a debugging session from the <strong>Run and Debug</strong> view from the side bar of VS Code. See more at <a href="/docs/editor/debugging">Debugging in VS Code</a>.</p> <p><img src="/assets/docs/csharp/debugging/run-and-debug.gif" alt="Debugging using Run and Debug" loading="lazy"></p> <h3 id="_debug-with-solution-explorer" data-needslink="_debug-with-solution-explorer">Debug with Solution Explorer</h3> <p>With the C# Dev Kit extension installed, there is a <strong>Debug</strong> context menu when you right-click on your project in the Solution Explorer.</p> <p>There are three options:</p> <ul> <li><strong>Start New Instance</strong> - This starts your project with a debugger attached.</li> <li><strong>Start without Debugging</strong> - This runs your project without a debugger attached.</li> <li><strong>Step into New Instance</strong> - This starts your project with a debugger attached but stops at the entrypoint of your code.</li> </ul> <p><img src="/assets/docs/csharp/debugging/solution-explorer-debug.gif" alt="Debugging using Solution Explorer" loading="lazy"></p> <h3 id="_debug-with-command-palette" data-needslink="_debug-with-command-palette">Debug with Command Palette</h3> <p>With the C# Dev Kit extension installed, you can also start debugging from the Command Palette <span class="dynamic-keybinding" data-commandId="workbench.action.showCommands" data-osx="⇧⌘P" data-win="Ctrl+Shift+P" data-linux="Ctrl+Shift+P"><span class="keybinding">⇧⌘P</span> (Windows, Linux <span class="keybinding">Ctrl+Shift+P</span>)</span> by using the <strong>Debug: Select and Start Debugging</strong> command.</p> <p>Note: This adds a launch configuration entry to your debug dropdown list.</p> <p><img src="/assets/docs/csharp/debugging/select-and-start-debugging.gif" alt="Debugging using Command Palette" loading="lazy"></p> <h3 id="_debug-with-dynamic-inmemory-launch-configurations" data-needslink="_debug-with-dynamic-inmemory-launch-configurations">Debug with dynamic (in-memory) launch configurations</h3> <p>With the C# Dev Kit extension installed, you can create dynamic launch configurations. How you create them depends if your project has an existing <code>launch.json</code> file.</p> <h4 id="_existing-launchjson" data-needslink="_existing-launchjson">Existing launch.json</h4> <p>If you have an existing <code>launch.json</code>, you can go to the Debug view, select the dropdown, and select the <code>C#</code> option. This should give you a selection of launch targets that you can add to your dropdown list. After selecting, you can hit <span class="dynamic-keybinding" data-commandId="workbench.action.debug.start" data-osx="F5" data-win="F5" data-linux="F5"><span class="keybinding">F5</span></span> or <strong>Start Debugging</strong> with the newly generated configuration.</p> <p><img src="/assets/docs/csharp/debugging/add-dynamic-configuration.gif" alt="Add Dynamic C# Configuration" loading="lazy"></p> <h4 id="_no-launchjson" data-needslink="_no-launchjson">No launch.json</h4> <p>If you do not have a <code>launch.json</code> in your project, you can add and access these dynamic configurations in the <strong>Show all automatic debug configurations</strong> in the Debug view.</p> <p><img src="/assets/docs/csharp/debugging/show-all-automatic-debug-config.gif" alt="Debug with Show all automatic debug configurations" loading="lazy"></p> <h4 id="_removing-dynamic-inmemory-launch-configurations" data-needslink="_removing-dynamic-inmemory-launch-configurations">Removing dynamic (in-memory) launch configurations</h4> <p>You can remove the generated configurations with Command Palette <span class="dynamic-keybinding" data-commandId="workbench.action.showCommands" data-osx="⇧⌘P" data-win="Ctrl+Shift+P" data-linux="Ctrl+Shift+P"><span class="keybinding">⇧⌘P</span> (Windows, Linux <span class="keybinding">Ctrl+Shift+P</span>)</span> and using the command <strong>Debug: Select and Start Debugging</strong>.</p> <p>In the dropdown, it lists all your existing debug configurations. If you hover over the dynamic configurations, a clickable trashcan icon appears on the right. You can select that icon to remove the dynamic configuration.</p> <p><img src="/assets/docs/csharp/debugging/delete-dynamic-config.gif" alt="Remove dynamic configuration" loading="lazy"></p> <h3 id="_debug-with-launchjson" data-needslink="_debug-with-launchjson">Debug with launch.json</h3> <p>If you are using the C# Dev Kit, we recommend not using this option. However, if you have the need to modify the debug configuration directly, see <a href="/docs/csharp/debugger-settings">Configuring launch.json for C# debugging</a>.</p> <h2 id="_attaching-to-a-process" data-needslink="_attaching-to-a-process">Attaching to a process</h2> <p>You can attach to a C# process using with the Command Palette <span class="dynamic-keybinding" data-commandId="workbench.action.showCommands" data-osx="⇧⌘P" data-win="Ctrl+Shift+P" data-linux="Ctrl+Shift+P"><span class="keybinding">⇧⌘P</span> (Windows, Linux <span class="keybinding">Ctrl+Shift+P</span>)</span> and running the <strong>Debug: Attach to a .NET 5+ or .NET Core process</strong> command.</p> <p><img src="/assets/docs/csharp/debugging/attach-to-process.png" alt="Attach to a C# process" loading="lazy"></p> <h2 id="_configuration-options" data-needslink="_configuration-options">Configuration options</h2> <p>There are many options and settings available to configure the debugger. You can use <code>launchSettings.json</code>, VS Code <a href="/docs/getstarted/settings">User Settings</a> to modify your debug options, or directly modify your <code>launch.json</code>.</p> <h3 id="_launchsettingsjson" data-needslink="_launchsettingsjson">launchSettings.json</h3> <p>If you have <code>launchSettings.json</code> from Visual Studio, you should see your profiles listed using <a href="#_debug-with-f5">Run from F5</a> or <a href="#_debug-with-command-palette">Run from Command Palette</a>.</p> <p><img src="/assets/docs/csharp/debugging/launch-profiles-debug.gif" alt="Debugging using launchSettings.json" loading="lazy"></p> <p>Refer to <a href="/docs/csharp/debugger-settings">Configuring C# debugging</a> for more details.</p> <h3 id="_user-settings" data-needslink="_user-settings">User settings</h3> <p>If you have settings that you wish to change while using the C# debugger, you can find these options under <span class="filePreferencesPath"><strong>File</strong> > <strong>Preferences</strong></span> > <strong>Settings</strong> (<span class="dynamic-keybinding" data-commandId="workbench.action.openSettings" data-osx="⌘," data-win="Ctrl+," data-linux="Ctrl+,"><span class="keybinding">⌘,</span> (Windows, Linux <span class="keybinding">Ctrl+,</span>)</span>) and searching for these options.</p> <ul> <li><code>csharp.debug.stopAtEntry</code> - If true, the debugger should stop at the entry point of the target. This option defaults to <code>false</code>.</li> <li><code>csharp.debug.console</code> - When launching console projects, indicates which console the target program should be launched into. <strong>Note:</strong> This option is only used for the 'dotnet' debug configuration type. <ul> <li><code>internalConsole</code> [Default] - VS Code's Debug Console. This mode allows you to see messages from both the debugger and the target program in one place. Refer to <a href="/docs/csharp/debugger-settings#_console-terminal-window">full documentation</a> for more details.</li> <li><code>integratedTerminal</code> - VS Code's integrated terminal.</li> <li><code>externalTerminal</code> - External terminal that can be configured via user settings.</li> </ul> </li> <li><code>csharp.debug.sourceFileMap</code> - Maps build-time paths to local source locations. All instances of build-time path will be replaced with the local source path. <br> Example: <br> <code>{\"<build-path>\":\"<local-source-path>\"}</code></li> <li><code>csharp.debug.justMyCode</code> - When enabled (the default), the debugger only displays and steps into user code ("My Code"), ignoring system code and other code that is optimized or that does not have debugging symbols. <a href="/docs/csharp/debugger-settings#_just-my-code">More information</a>.</li> <li><code>csharp.debug.requireExactSource</code> - Flag to require current source code to match the pdb. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.enableStepFiltering</code> - Flag to enable stepping over Properties and Operators. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.logging.exceptions</code> - Flag to determine whether exception messages should be logged to the output window. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.logging.moduleLoad</code> - Flag to determine whether module load events should be logged to the output window. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.logging.programOutput</code> - Flag to determine whether program output should be logged to the output window when not using an external console. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.logging.diagnosticsLog</code> - Various settings used to diagnose issues with the debugger.</li> <li><code>csharp.debug.logging.browserStdOut</code> - Flag to determine if stdout text from the launching the web browser should be logged to the output window. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.logging.elapsedTiming</code> - If true, engine logging includes <code>adapterElapsedTime</code> and <code>engineElapsedTime</code> properties to indicate the amount of time, in microseconds, that a request took. This option defaults to <code>false</code>.</li> <li><code>csharp.debug.logging.threadExit</code> - Controls if a message is logged when a thread in the target process exits. This option defaults to <code>false</code>.</li> <li><code>csharp.debug.logging.processExit</code> - Controls if a message is logged when the target process exits, or debugging is stopped. This option defaults to <code>true</code>.</li> <li><code>csharp.debug.suppressJITOptimizations</code> - If true, when an optimized module (.dll compiled in the Release configuration) loads in the target process, the debugger asks the Just-In-Time compiler to generate code with optimizations disabled. <a href="/docs/csharp/debugger-settings#_suppress-jit-optimizations">More information</a></li> <li><code>csharp.debug.symbolOptions.searchPaths</code> - Array of symbol server URLs (example: <code>http://MyExampleSymbolServer</code>) or directories (example: /build/symbols) to search for .pdb files. These directories will be searched in addition to the default locations next to the module and the path where the pdb was originally dropped to.</li> <li><code>csharp.debug.symbolOptions.searchMicrosoftSymbolServer</code> - If <code>true</code> the Microsoft Symbol server (<code>https://msdl.microsoft.com/download/symbols</code>) is added to the symbols search path. If unspecified, this option defaults to <code>false</code>.</li> <li><code>csharp.debug.symbolOptions.searchNuGetOrgSymbolServer</code> - If <code>true</code> the NuGet.org symbol server (<code>https://symbols.nuget.org/download/symbols</code>) is added to the symbols search path. If unspecified, this option defaults to <code>false</code>.</li> <li><code>csharp.debug.symbolOptions.cachePath</code> - Directory where symbols downloaded from symbol servers should be cached. If unspecified, on Windows the debugger defaults to <code>%TEMP%\\SymbolCache</code>, and on Linux and macOS the debugger defaults to <code>~/.dotnet/symbolcache</code>.</li> <li><code>csharp.debug.symbolOptions.moduleFilter.mode</code> - Controls which of the two basic operating modes the module filter operates in. <ul> <li><code>loadAllButExcluded</code> - Load symbols for all modules unless the module is in the <code>excludedModules</code> array.</li> <li><code>loadOnlyIncluded</code> - Do not attempt to load symbols for ANY module unless it is in the <code>includedModules</code> array, or it is included through the <code>includeSymbolsNextToModules</code> setting.</li> </ul> </li> <li><code>csharp.debug.symbolOptions.moduleFilter.excludedModules</code> - Array of modules that the debugger should NOT load symbols for. Wildcards (example: MyCompany.*.dll) are supported. This property is ignored unless <code>mode</code> is set to <code>loadAllButExcluded</code>.</li> <li><code>csharp.debug.symbolOptions.moduleFilter.includedModules</code> - Array of modules that the debugger should load symbols for. Wildcards (example: MyCompany.*.dll) are supported. This property is ignored unless <code>mode</code> is set to <code>loadOnlyIncluded</code>.</li> <li><code>csharp.debug.symbolOptions.moduleFilter.includeSymbolsNextToModules</code> - If true, for any module NOT in the <code>includedModules</code> array, the debugger will still check next to the module itself and the launching executable, but it will not check paths on the symbol search list. This option defaults to <code>true</code>. This property is ignored unless <code>mode</code> is set to <code>loadOnlyIncluded</code></li> <li><code>csharp.debug.allowFastEvaluate</code> - When true (the default state), the debugger will attempt faster evaluation by simulating execution of simple properties and methods.</li> <li><code>csharp.experimental.debug.hotReload</code> - When true, the debugger will enable applying changes while debugging if the target application supports hot reload.</li> <li><code>csharp.debug.hotReloadOnSave</code> - When true (the default state), the debugger will automatically apply code changes when the file is saved.</li> <li><code>csharp.debug.hotReloadVerbosity</code> - Controls the logging verbosity for the <strong>C# Hot Reload</strong> Output window. It can be set from <code>minimal</code> (default), <code>detailed</code> or <code>diagnostic</code>. It is recommended to increase the verbosity level if hot reload starts behaving unexpectedly.</li> </ul> <h2 id="_breakpoints" data-needslink="_breakpoints">Breakpoints</h2> <p>The C# Debugger supports various breakpoints, such as source line breakpoints, conditional breakpoints, and logpoints.</p> <h3 id="_breakpoint-conditional-breakpoint" data-needslink="_breakpoint-conditional-breakpoint">Breakpoint - Conditional breakpoint</h3> <p>With the help of expression evaluation, the debugger also supports conditional breakpoint. You can set your breakpoint to break when expression evaluates to true.</p> <p><img src="/assets/docs/csharp/debugging/conditional-breakpoint.gif" alt="Conditional Breakpoints" loading="lazy"></p> <h3 id="_breakpoint-function-breakpoint" data-needslink="_breakpoint-function-breakpoint">Breakpoint - Function Breakpoint</h3> <p>The debugger also supports functional breakpoints. You can set your breakpoint to break on the specific function by clicking on the <code>+</code> in the Breakpoints section of the Debug pane.</p> <p><img src="/assets/docs/csharp/debugging/function-breakpoint.gif" alt="Function Breakpoints" loading="lazy"></p> <h3 id="_breakpoint-logpoints" data-needslink="_breakpoint-logpoints">Breakpoint - Logpoints</h3> <p>Logpoints (also known as Tracepoints in Visual Studio) allow you to send output to Debug Console without editing code. They're different from breakpoints because they don't stop the execution flow of your application.</p> <p>To add a Logpoint, right-click in the far-left margin next to a line of code. Select <strong>Add Logpoint</strong> and type the message you want to log. Any expression between curly braces ('{' and '}') will be evaluated when the Logpoint is hit.</p> <p>The following tokens are also supported in the log message:</p> <table class="table table-striped"> <thead> <tr> <th>Token</th> <th>Description</th> <th>Example Output</th> </tr> </thead> <tbody> <tr> <td>$FILEPOS</td> <td>Current source file location</td> <td>C:\sources\repos\Project\Program.cs:4</td> </tr> <tr> <td>$FUNCTION</td> <td>Current function name</td> <td>Program.<Main>$</td> </tr> <tr> <td>$ADDRESS</td> <td>Current instruction</td> <td>0x00007FFF83A54001</td> </tr> <tr> <td>$TID</td> <td>Thread ID</td> <td>20668</td> </tr> <tr> <td>$PID</td> <td>Process ID</td> <td>10028</td> </tr> <tr> <td>$TNAME</td> <td>Thread name</td> <td><No Thread Name></td> </tr> <tr> <td>$PNAME</td> <td>Process name</td> <td>C:\sources\repos\Project\bin\Debug\net7.0\console.exe</td> </tr> <tr> <td>$CALLER</td> <td>Calling function name</td> <td>void console.dll!Program.Foo()</td> </tr> <tr> <td>$CALLSTACK</td> <td>Call stack</td> <td>void console.dll!Program.Bar() <br>void console.dll!Program.Foo()<br>void console.dll!Program.<Main>$(string[] args) <br> [External Code]</td> </tr> <tr> <td>$TICK</td> <td>Tick count (from Windows GetTickCount)</td> <td>28194046</td> </tr> <tr> <td>$HITCOUNT</td> <td>Number of times this breakpoint has been hit</td> <td>5</td> </tr> </tbody> </table> <p><img src="/assets/docs/csharp/debugging/logmessage-breakpoint.gif" alt="LogMessage Breakpoint" loading="lazy"></p> <h3 id="_breakpoint-triggered-breakpoints" data-needslink="_breakpoint-triggered-breakpoints">Breakpoint - Triggered breakpoints</h3> <p>A triggered breakpoint is a breakpoint that is automatically enabled once another breakpoint is hit. They can be very useful when diagnosing failure cases in code that happen only after a certain precondition.</p> <p>Triggered breakpoints can be set by right-clicking on the glyph margin, selecting <strong>Add Triggered Breakpoint</strong>, and then choosing which other breakpoint enables the breakpoint.</p> <p><video src="/assets/docs/editor/debugging/debug-triggered-breakpoint.mp4" autoplay loop controls muted></video></p> <h2 id="_stopping-on-exceptions" data-needslink="_stopping-on-exceptions">Stopping on exceptions</h2> <p>The C# debugger supports configuration options for when the debugger stops when exceptions are thrown or caught. This is done through two different entries in the <strong>BREAKPOINTS</strong> section of the <strong>Run</strong> view:</p> <p><img src="/assets/docs/csharp/debugging/exception-settings.gif" alt="Exceptions settings in BREAKPOINTS Run View" loading="lazy"></p> <p>Note that the <strong>BREAKPOINTS</strong> section will be missing these entries until the first time that the folder has been debugged with the C# debugger.</p> <p>Checking <strong>All Exceptions</strong> will configure the debugger to stop when an exception is thrown. If <a href="/docs/csharp/debugger-settings#_just-my-code">Just My Code</a> is enabled (which it is by default), the debugger will not break if an exception is internally thrown and caught in library code. However, if the exception is thrown in library code and returned to user code, the debugger will break.</p> <p>Checking <strong>User-Unhandled Exceptions</strong> will configure the debugger to stop when an exception is caught in non-user code after having been thrown in user code or traveled through user code. Exceptions that become user-unhandled aren't always a bug in the process being debugged -- it could be that user code is implementing an API and is expected to raise an exception. In many cases there is an actual problem, so, by default, the debugger will stop when an exception becomes user-unhandled.</p> <h3 id="_exception-conditions" data-needslink="_exception-conditions">Exception Conditions</h3> <p>Both checkboxes support conditions to break on only selected exception types. To edit the condition, select the pencil icon (see image above) or right-click on the entry and invoke <strong>Edit Condition</strong>. The condition is a comma-separated list of exception types to break on, or if the list starts with '!', a list of exception types to ignore.</p> <p>Examples conditions:</p> <table class="table table-striped"> <thead> <tr> <th>Example condition value</th> <th>Result</th> </tr> </thead> <tbody> <tr> <td>System.NullReferenceException</td> <td>This will only break on null reference exceptions.</td> </tr> <tr> <td>System.NullReferenceException, System.InvalidOperationException</td> <td>This will break on both null reference exceptions and invalid operation exceptions.</td> </tr> <tr> <td>!System.Threading.Tasks.TaskCanceledException</td> <td>This will break on all exceptions except for task canceled.</td> </tr> <tr> <td>!System.Threading.Tasks.TaskCanceledException, System.NotImplementedException</td> <td>This will break on all exceptions except for task canceled and not implemented.</td> </tr> </tbody> </table> <h2 id="_expression-evaluation" data-needslink="_expression-evaluation">Expression evaluation</h2> <p>The debugger also lets you evaluate expressions in the <strong>WATCH</strong> window as well as the Debug Console.</p> <h2 id="_hot-reload" data-needslink="_hot-reload">Hot Reload</h2> <p>With the C# Dev Kit extension installed, the debugger allows you to apply C# code changes while debugging.</p> <p><img src="/assets/docs/csharp/debugging/hotreload-toolbar.png" alt="Hot Reload displayed in the debugging toolbar" loading="lazy"></p> <p>In order to enable Hot Reload, <code>csharp.experimental.debug.hotReload</code> must be set to true, see <a href="#_user-settings">User settings</a> for more information. The Hot Reload session will only start if the target debugger engine supports applying code changes.</p> <h3 id="_supported-projects-and-scenarios" data-needslink="_supported-projects-and-scenarios">Supported projects and scenarios</h3> <p>C# Dev Kit supports the "classic" Hot Reload experience, also known as Edit and Continue. You can apply code changes while debugging regardless if you are stopped at a breakpoint or the program is running.</p> <p>As of November 2023, some features such as <code>MetadataUpdateHandler</code>, which enables ASP.NET Core applications to automatically refresh the browser <a href="https://learn.microsoft.com/dotnet/api/system.reflection.metadata.metadataupdatehandlerattribute?view=net-8.0" class="external-link" target="_blank">after a change is made</a>, are not available yet. Applying code changes without debugging is also not supported.</p> <p>The runtime added support for applying changes while debugging on Linux/macOS in .NET 8, so a runtime version of .NET 8+ is required when applying code changes for .NET apps running on these operating systems.</p> <table class="table table-striped"> <thead> <tr> <th>Application Type</th> <th>Supports Hot Reload with C# Dev Kit</th> <th>.NET 8+ Required</th> </tr> </thead> <tbody> <tr> <td>Console</td> <td>✅</td> <td>Linux/macOS Only</td> </tr> <tr> <td>Test Projects</td> <td>✅</td> <td>Linux/macOS Only</td> </tr> <tr> <td>Class Library Projects</td> <td>✅</td> <td>Linux/macOS Only</td> </tr> <tr> <td>ASP.NET Core</td> <td>⚠️* <em>Currently only supports changes on <code>.cs</code> files</em></td> <td>Linux/macOS Only</td> </tr> <tr> <td>MAUI</td> <td>❌* <em>Available soon</em></td> <td>--</td> </tr> <tr> <td>Unity</td> <td>❌</td> <td>--</td> </tr> </tbody> </table> <p>See <a href="/docs/csharp/cs-dev-kit-faq#_what-project-types-are-currently-supported">supported projects</a> for more information on projects currently supported by C# Dev Kit. Also see the <a href="/docs/csharp/cs-dev-kit-faq#_hot-reload">C# Dev Kit FAQ</a> for more information on troubleshooting other unsupported scenarios.</p> <h3 id="_how-to-apply-code-changes" data-needslink="_how-to-apply-code-changes">How to apply code changes</h3> <p>Once a Hot Reload session starts and new changes are made, you can apply these changes to your application with any of the following actions:</p> <table class="table table-striped"> <thead> <tr> <th>Action</th> <th>Explanation</th> </tr> </thead> <tbody> <tr> <td>Hot Reload <br> <span class="keybinding">Ctrl+Shift+Enter</span></td> <td>Apply code changes, available from the <strong>Debug Toolbar</strong>.</td> </tr> <tr> <td>Save File <br> <span class="dynamic-keybinding" data-commandId="workbench.action.files.save" data-osx="⌘S" data-win="Ctrl+S" data-linux="Ctrl+S"><span class="keybinding">⌘S</span> (Windows, Linux <span class="keybinding">Ctrl+S</span>)</span></td> <td>Start applying code changes if <code>csharp.debug.hotReloadOnSave</code> is set to true. See <a href="#_user-settings">User settings</a> for more information.</td> </tr> <tr> <td>Continue / Step Over / Step Into / Step Out <br> <span class="dynamic-keybinding" data-commandId="workbench.action.debug.continue" data-osx="F5" data-win="F5" data-linux="F5"><span class="keybinding">F5</span></span> / <span class="dynamic-keybinding" data-commandId="workbench.action.debug.stepOver" data-osx="F10" data-win="F10" data-linux="F10"><span class="keybinding">F10</span></span> / <span class="dynamic-keybinding" data-commandId="workbench.action.debug.stepInto" data-osx="F11" data-win="F11" data-linux="F11"><span class="keybinding">F11</span></span> / <span class="dynamic-keybinding" data-commandId="workbench.action.debug.stepOut" data-osx="⇧F11" data-win="Shift+F11" data-linux="Shift+F11"><span class="keybinding">⇧F11</span> (Windows, Linux <span class="keybinding">Shift+F11</span>)</span></td> <td>When changes were made while on a break state (for example, while stopped at a breakpoint), these commands will automatically apply them.</td> </tr> </tbody> </table> <p><img src="/assets/docs/csharp/debugging/hotreload-demo.gif" alt="Hot Reload demonstrated on ASP.NET" loading="lazy"></p> <h2 id="_next-steps" data-needslink="_next-steps">Next steps</h2> <p>Read on to find out about:</p> <ul> <li><a href="/docs/editor/debugging">Debugging</a> - Find out how to use the debugger in VS Code with your project for any language.</li> </ul> <div class="feedback"></div> <div class="body-footer">6/6/2023</div> </main> <!-- medium right nav --> <div class="col-sm-3 col-md-2 hidden-xs docs-subnavbar-container"> <nav id="docs-subnavbar" aria-label="On Page" data-spy="affix" data-offset-top="20"> <h4><span class="sr-only">In this article there are 8 sections</span><span aria-hidden="true">In this article</span></h4> <ul class="nav"> <li><a href="#_run-and-debug">Run and Debug</a></li> <li><a href="#_attaching-to-a-process">Attaching to a process</a></li> <li><a href="#_configuration-options">Configuration options</a></li> <li><a href="#_breakpoints">Breakpoints</a></li> <li><a href="#_stopping-on-exceptions">Stopping on exceptions</a></li> <li><a href="#_expression-evaluation">Expression evaluation</a></li> <li><a href="#_hot-reload">Hot Reload</a></li> <li><a href="#_next-steps">Next steps</a></li> </ul> <div class="connect-widget"></div> </nav> </div> <!-- end of page connect widget --> <div class="col-xs-12 visible-xs"> <div class="connect-widget"></div> </div> </div> </div> </div> </div> <footer role="contentinfo" class="container"> <div class="footer-container"> <div class="footer-row"> <div class="footer-social"> <ul class="links"> <li> <a href="https://go.microsoft.com/fwlink/?LinkID=533687"><img src="/assets/icons/x-icon.svg" class="x-icon" alt="Follow us on X"></a> </li> <li> <a href="https://github.com/microsoft/vscode"><img src="/assets/icons/github-icon.svg" alt="VS Code on Github"></a> </li> <li> <a href="https://www.youtube.com/@code"><img src="/assets/icons/youtube-icon.svg" alt="VS Code on YouTube"></a> </li> <script> function manageConsent() { if (siteConsent && siteConsent.isConsentRequired) { siteConsent.manageConsent(); } } </script> </ul> <a id="footer-microsoft-link" class="microsoft-logo" href="https://www.microsoft.com"> <img src="/assets/icons/microsoft.svg" alt="Microsoft homepage" /> </a> </div> </div> <div class="footer-row"> <ul class="links"> <li><a id="footer-support-link" href="https://support.serviceshub.microsoft.com/supportforbusiness/create?sapId=d66407ed-3967-b000-4cfb-2c318cad363d" target="_blank" rel="noopener">Support</a></li> <li><a id="footer-privacy-link" href="https://go.microsoft.com/fwlink/?LinkId=521839" target="_blank" rel="noopener">Privacy</a></li> <li style="display: none;"><a id="footer-cookie-link" style="cursor: pointer;" onclick="manageConsent()" target="_blank" rel="noopener">Manage Cookies</a></li> <li><a id="footer-terms-link" href="https://www.microsoft.com/legal/terms-of-use" target="_blank" rel="noopener">Terms of Use</a></li> <li><a id="footer-license-link" href="/License" target="_blank" rel="noopener">License</a></li> </ul> </div> </div> </footer> <script src="/dist/index.js"></script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "SoftwareApplication", "name" : "Visual Studio Code", "softwareVersion": "1.95", "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }, "applicationCategory": "DeveloperApplication", "applicationSubCategory": "Text Editor", "alternateName": "VS Code", "datePublished": "2021-11-03", "operatingSystem": "Mac, Linux, Windows", "logo": "https://code.visualstudio.com/assets/apple-touch-icon.png", "screenshot": "https://code.visualstudio.com/assets/home/home-screenshot-win.png", "releaseNotes": "https://code.visualstudio.com/updates", "downloadUrl": "https://code.visualstudio.com/download", "license": "https://code.visualstudio.com/license", "softwareRequirements": "https://code.visualstudio.com/docs/supporting/requirements", "url" : "https://code.visualstudio.com", "author": { "@type": "Organization", "name": "Microsoft" }, "publisher": { "@type": "Organization", "name": "Microsoft" }, "maintainer": { "@type": "Organization", "name": "Microsoft" }, "potentialAction": { "@type": "SearchAction", "target": "https://code.visualstudio.com/Search?q={search_term_string}", "query-input": "required name=search_term_string" }, "sameAs" : [ "https://en.wikipedia.org/wiki/Visual_Studio_Code", "https://twitter.com/code", "https://www.youtube.com/code", "https://www.tiktok.com/@vscode", "https://github.com/microsoft/vscode" ] } </script> </body> </html>