-
Notifications
You must be signed in to change notification settings - Fork 677
Enabling C# debugger logging
Here is how to enable additional logging for the VS Code C# debugger to help troubleshoot problems.
The C# debugger exposes several logging setting via a Visual Studio Code Setting. To modify them:
- Open up the VS Code settings editor (File->Preferences->Settings).
- Enter 'diagnosticsLog' into the search bar
- Navigate to 'Extensions->C#->Debugger' using the settings tree
- Enable the required setting. The most commonly used logging setting is 'Protocol Messages'.
If you have VS Code configured using a launch.json file with "type": "coreclr"
or "type": "clr"
, then you can configure logging using launch configuration properties. Here is an example of the new sections to add to launch.json:
"configurations": [
{
"type": "coreclr",
"...": "...",
"logging": {
"diagnosticsLog": {
"protocolMessages": true
}
}
},
{ "...": "..." }
]
When this is enabled, logging will be sent to the VS Code Debug Console where you can copy/paste the relevant sections.
If you are dealing with a problem that happens either very early on during debugger startup, or a problem where the debugger is crashing, it can be helpful to run the debugger (vsdbg-ui) in the console.
To do this:
- Open up a terminal (command prompt) window
- Change to the directory of the debugger. (NOTE: if you are using VS Code Insiders, change
.vscode
to.vscode-insiders
)-
Linux/macOS:
cd ~/.vscode/extensions/ms-dotnettools.csharp-<insert-version-here>/.debugger
-
Windows:
cd /d C:\Users\<your-username>\.vscode\extensions\ms-dotnettools.csharp-<insert-version-here>\.debugger
-
Linux/macOS:
- Run vsdbg-ui:
./vsdbg-ui --server --consoleLogging
- Go back to VS Code and open your
.vscode\launch.json
file. - Go to the section for of launch.json for your current launch configuration and add:
"debugServer": 4711
- Debug as normal
- When the problem happens, look at what is printed into the terminal.
Example launch.json configuration:
{
"version": "0.2.0",
"configurations": [
{
"debugServer": 4711,
"name": ".NET Core Launch (console)",
"...": "...",
},
{ "...": "..." }
]
}
Configuration
- Configuring Snap installs of dotnet-sdk
- Configuring Arch Linux for Unity development
- Configuring Arch Linux for Razor development
- Installing the .NET Core Debugger on Arch Linux
Debugger
- Overview
- launch.json Help
- Feature List
- Enable Logging
- Portable PDBs
- Troubleshoot Breakpoints
- Attaching to remote processes
- Remote Debugging On Linux-Arm
- Windows Subsystem for Linux
- Diagnosting 'Debug adapter process has terminated unexpectedly'
- Testing libicu compatibility on Linux
- Debugging into the .NET Runtime itself
- Debugging x64 processes on an arm64 computer
Documentation
- Change Log
- Branches and Releases
- Installing Beta Releases
- Installing without internet connectivity
- Linux Support
- Run/Debug Unit Tests
- Troubleshooting: 'The .NET Core SDK cannot be located.' errors
Developer Guide