# Debug with VSCode

Support run and debug with VSCode.

## macOS: SRS Server

Install the following extensions:

- CMake Tools
- CodeLLDB
- C/C++ Extension Pack

Open the folder like `$HOME/git/srs` in VSCode, after you clone srs to
`$HOME/git/srs` directory.

Run commmand to configure the project by pressing `Command+Shift+P`, then type `CMake: Configure` 
then select `Clang` as the toolchain. Or run the command manually in terminal:

```bash
cmake -S $HOME/git/srs/trunk/cmake -B $HOME/git/srs/trunk/cmake/build
```

> Note: Sometimes it may fail to configure when building libsrtp. Just retry, and it will succeed.

> Note: Make sure you have `xcode` installed, and run `xcode-select --install` to setup the toolchains.

> Note: The `settings.json` is used to configure the cmake. It will use `$HOME/git/srs/trunk/cmake/CMakeLists.txt` 
> and `$HOME/git/srs/trunk/cmake/build` as the source file and build directory.

Click the `Run > Run Without Debugging` or `Run > Start Debugging` from menu to start or 
debug the server. It will invoke the `build` task defined in `tasks.json`, or you can run 
it manually:

```bash
cmake --build $HOME/git/srs/trunk/cmake/build
```

> Note: The `launch.json` is used for running and debugging. The build will output the binary to
> `$HOME/git/srs/trunk/cmake/build/srs`.

## macOS: SRS UTest

The most straightforward way is to select a test name like `WorkflowRtcManuallyVerifyForPublisher`,
then select `Debug gtest (macOS CodeLLDB)` and run the debug.

Or you can use the following way to run specified test from the test panel.

Install the following extensions:

- C++ TestMate

Open the folder like `$HOME/git/srs` in VSCode, after you clone srs to
`$HOME/git/srs` directory.

Run commmand to configure the project by pressing `Command+Shift+P`, then type `CMake: Configure` 
then select `Clang` as the toolchain. Or run the command manually in terminal:

```bash
cmake -S $HOME/git/srs/trunk/cmake -B $HOME/git/srs/trunk/cmake/build
```

> Note: Sometimes it may fail to configure when building libsrtp. Just retry, and it will succeed.

Afterwards, build the utest by pressing `Command+Shift+P`, then type `CMake: Build` to run the 
build command. It will invoke the `build` task defined in `tasks.json`, or you can run it manually:

```bash
cmake --build $HOME/git/srs/trunk/cmake/build
```

Then you will discover all the unit testcases from the `View > Testing` panel. You can 
open utest source file like `trunk/src/utest/srs_utest.cpp`, then click the `Run Test` or `Debug Test`
on each testcase such as `FastSampleInt64Test`.

## macOS: SRS Regression Test

Follow the [srs-bench](../trunk/3rdparty/srs-bench/README.md) to setup the environment.

Open the test panel by clicking `View > Testing`, run the regression tests under:

```
+ Go
  + github.com/ossrs/srs-bench
    + blackbox
    + gb28181
    + srs
```

## macOS: Proxy

Install the following extensions:

- Go

Open the folder like `~/git/srs` in VSCode.

Click the `View > Run` and select `Launch srs-proxy` to start the proxy server.

Click the `Run > Run Without Debugging` button to start the server.

> Note: The `launch.json` is used for running and debugging.
