# Debugging in VS Code

This section covers remote debugging (GDB jlink) of Matter examples in VS Code.

## Requirements

1. C/C++ Extension Pack (_vscode extension_) - language support
2. Cortex-Debug (_vscode extension_) - GDB debugger support
3. ARM GCC Toolchain
   (https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) -
   required arm-none-eabi tools
4. J-Link Software Tools - required J-Link GDB Server for J-Link based debuggers
   (https://www.segger.com/downloads/jlink)

## Settings

Before starting a debug session ensure the following:

<ol>
<div style="text-align: justify"> 
  <li> A path to "arm-none-eabi-gdb.exe" is provided in the "Settings.Json" file under the "cortex-debug.gdbPath.windows" property.</li>  
  <li> A path to the GDB jlink server executable is provided in the launch.Json file for the property "serverpath". Find this property under the configuration name "Debug efr32 example app"</li>
</ol>

## Debugging

<ol>

### Step 1:

Use the shortcut (Ctrl + Shift + P) to trigger the command pallet.

### Step 2:

A drop-down menu will appear along with a prompt. Select the "Debug efr32 example app" and Start Debugging, or press F5 on
your keyboard.

### Step 3:

Select the example you want to debug.

### Step 4:

From the drop-down menu, select the desired target device.

![](../../images/debug_session.gif)

## </ol>