---
title: VS Code에서의 디버깅
i18nReady: true
---

이 장에서는 [Tauri 앱의 코어 프로세스](/ko/concept/process-model/#코어-프로세스)를 디버깅하기 위한 VS Code 설정에 대해 설명합니다.

## vscode-lldb 확장 기능을 갖춘 모든 플랫폼의 경우

### 사전 준비

[`vscode-lldb`] 확장 기능을 설치하십시오.

[`vscode-lldb`]: https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb

### launch.json 설정

`.vscode/launch.json` 파일을 만들고 다음 JSON 콘텐츠를 붙여넣습니다:

```json title=".vscode/launch.json"
{
  // VS Code의 IntelliSense 입력 지원 기능을 사용하여 사용 가능한 속성에 대해 알아보십시오.
  // 마우스를 기존 속성 위에 놓으면 해당 설명이 표시됩니다.
  // 자세한 내용은 https://go.microsoft.com/fwlink/?linkid=830387을 참조하십시오.
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Tauri Development Debug",
      "cargo": {
        "args": [
          "build",
          "--manifest-path=./src-tauri/Cargo.toml",
          "--no-default-features"
        ]
      },
      // `beforeDevCommand`의 작업을 사용하는 경우, `.vscode/tasks.json`에서 설정해야 합니다.
      "preLaunchTask": "ui:dev"
    },
    {
      "type": "lldb",
      "request": "launch",
      "name": "Tauri Production Debug",
      "cargo": {
        "args": ["build", "--release", "--manifest-path=./src-tauri/Cargo.toml"]
      },
      // `beforeBuildCommand`의 작업을 사용하는 경우, `.vscode/tasks.json`에서 설정해야 합니다.
      "preLaunchTask": "ui:build"
    }
  ]
}
```

이제 `cargo`를 직접 사용하여 Rust 애플리케이션을 빌드하고 개발 모드와 프로덕션 모드 모두에서 로드할 수 있습니다.

즉, Tauri CLI를 사용하지 않으므로 CLI 고유의 기능은 **실행되지 않습니다**. `beforeDevCommand` 및 `beforeBuildCommand` 스크립트는 사전에 실행하거나 위와 같이 `preLaunchTask` 필드에서 **작업으로 설정**해야 합니다. 다음은 개발 서버를 시작하는 `beforeDevCommand` 작업과 `beforeBuildCommand` 작업 두 가지를 포함하는 `.vscode/tasks.json` 파일의 예입니다:

```json title=".vscode/tasks.json"
{
  // tasks.json 형식에 대한 문서는
  // https://go.microsoft.com/fwlink/?LinkId=733558을 참조하십시오.
  "version": "2.0.0",
  "tasks": [
    {
      "label": "ui:dev",
      "type": "shell",
      // `dev`는 백그라운드에서 실행이 계속됩니다.
      // 이상적으로는 `problemMatcher`도 설정해야 합니다.
      // https://code.visualstudio.com/docs/editor/tasks#_can-a-background-task-be-used-as-a-prelaunchtask-in-launchjson을 참조하십시오.
      "isBackground": true,
      // 이 부분을 자신의 `beforeDevCommand`에 맞게 변경합니다:
      "command": "yarn",
      "args": ["dev"]
    },
    {
      "label": "ui:build",
      "type": "shell",
      // 이 부분을 자신의 `beforeBuildCommand`에 맞게 변경합니다:
      "command": "yarn",
      "args": ["build"]
    }
  ]
}
```

이제 `src-tauri/src/main.rs`나 다른 Rust 파일에 중단점을 설정하고 `F5`를 눌러 디버깅을 시작할 수 있습니다.

## Windows의 Visual Studio Windows 디버거를 사용하는 경우

"Visual Studio Windows Debugger"는 Windows 전용 디버거로, 일반적으로 [`vscode-lldb`]보다 빠르며 열거형(enums)과 같은 일부 Rust 기능 지원도 우수합니다.

### 사전 준비

[C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 확장 기능을 설치하고 https://code.visualstudio.com/docs/cpp/config-msvc#_prerequisites에 따라 Visual Studio Windows Debuger를 설치하십시오.

### launch.json 및 tasks.json 설정

```json title=".vscode/launch.json"
{
  // VS Code의 IntelliSense 입력 지원 기능을 사용하여 사용 가능한 속성에 대해 알아보십시오.
  // 마우스를 기존 속성 위에 놓으면 해당 설명이 표시됩니다.
  // 자세한 내용은 https://go.microsoft.com/fwlink/?linkid=830387을 참조하십시오.
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch App Debug",
      "type": "cppvsdbg",
      "request": "launch",
      // 실행 파일(exe) 이름을 실제로 사용하는 exe 파일 이름으로 변경하십시오.
      // "릴리스 빌드"(공개판)를 디버깅하려면 `target/debug`를 `release/debug`로 변경하십시오.)
      "program": "${workspaceRoot}/src-tauri/target/debug/your-app-name-here.exe",
      "cwd": "${workspaceRoot}",
      "preLaunchTask": "ui:dev"
    }
  ]
}
```

Tauri CLI는 사용되지 않으므로 CLI 고유의 기능은 **실행되지 않습니다**. `tasks.json`은 `lldb`의 경우와 동일하지만, 시작 전에 항상 컴파일하고 싶다면 설정 그룹을 추가하여 자신의 `preLaunchTask`를 `launch.json`에서 `tasks.json`으로 타겟팅해야 합니다.

다음은 개발 서버(`beforeDevCommand`에 해당)와 컴파일(`cargo build`)을 그룹으로 실행하는 사례입니다. 이를 사용하려면 `launch.json`의 `preLaunchTask` 설정을 `dev`(또는 그룹에 붙인 이름)로 변경합니다.

```json title=".vscode/tasks.json"
{
  // tasks.json 형식에 대한 문서는
  // https://go.microsoft.com/fwlink/?LinkId=733558을 참조하십시오.
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build:debug",
      "type": "cargo",
      "command": "build",
      "options": {
        "cwd": "${workspaceRoot}/src-tauri"
      }
    },
    {
      "label": "ui:dev",
      "type": "shell",
      // `dev`는 백그라운드에서 실행이 계속됩니다.
      // 이상적으로는 `problemMatcher`도 설정해야 합니다.
      // https://code.visualstudio.com/docs/editor/tasks#_can-a-background-task-be-used-as-a-prelaunchtask-in-launchjson을 참조하십시오.
      "isBackground": true,
      // 이 부분을 자신의 `beforeBuildCommand`에 맞게 변경합니다:
      "command": "yarn",
      "args": ["dev"]
    },
    {
      "label": "dev",
      "dependsOn": ["build:debug", "ui:dev"],
      "group": {
        "kind": "build"
      }
    }
  ]
}
```

<div style="text-align: right">
  【※ 이 한국어판은, 「Jul 23, 2024 영문판」에 근거하고 있습니다】
</div>
