> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab Unified SDK에서 디버그 추적

> PlayFab Unified SDK에서 디버그 추적을 활성화하고 구성합니다: HCTraceLevel 상세도 설정, Visual Studio로 출력 라우팅, 사용자 지정 게임 로그로 전달.

PlayFab Unified SDK는 개발자가 내부 API 동작을 모니터링하고, 오류를 추적하고, PlayFab 로그를 게임의 로깅 인프라에 통합할 수 있도록 확장 가능한 디버그 추적 시스템을 제공합니다. 개발 중에는 디버그 출력을 Visual Studio 출력 창으로 라우팅할 수도 있습니다.

## 개요

디버그 추적은 다음과 같은 용도로 유용합니다.

* PlayFab SDK 요청과 응답 모니터링
* API 호출 실패 진단
* 사용자 지정 로깅 시스템과 통합
* 환경별 로그 상세도 조정(개발 대 프로덕션)
* 스레드 ID 추적을 통한 멀티스레드 문제 디버깅

## 추적 활성화 및 구성

다음 API 호출을 사용하여 추적을 활성화하고, 상세도를 설정하고, 출력을 보낼 위치를 구성할 수 있습니다.

```cpp theme={null}
HCSettingsSetTraceLevel(HCTraceLevel::Verbose);  // Verbose, Error, or Off
HCTraceSetTraceToDebugger(true);                 // Route to Visual Studio Output window
HCTraceSetClientCallback(TraceCallback);         // Custom trace handler
```

## 추적 수준

| 수준                      | 설명                   |
| ----------------------- | -------------------- |
| `HCTraceLevel::Off`     | 모든 추적을 비활성화          |
| `HCTraceLevel::Error`   | 실패한 API 호출만 기록       |
| `HCTraceLevel::Verbose` | 모든 요청, 응답, 메타데이터를 기록 |

## 사용자 지정 로깅 시스템과 통합

### GameLog 도우미 함수

```cpp theme={null}
#include <iostream>
#include <string>

void GameLog(const std::string& levelStr, const std::string& message)
{
    std::cout << "[" << levelStr << "] " << message << std::endl;
}
```

### 추적 콜백 예제

```cpp theme={null}
#include <sstream>

void CALLBACK TraceCallback(
    const char* areaName,
    HCTraceLevel level,
    uint64_t threadId,
    uint64_t timestamp,
    const char* message)
{
    std::ostringstream oss;

    std::string levelStr;
    switch (level)
    {
        case HCTraceLevel::Error:   levelStr = "Error";   break;
        case HCTraceLevel::Verbose: levelStr = "Verbose"; break;
        default:                    levelStr = "Log";     break;
    }

    oss << "[" << areaName << "] [Thread " << threadId << "] " << message;
    GameLog(levelStr, oss.str());
}
```

### 초기화

```cpp theme={null}
void InitializePlayFabTracing()
{
    HCSettingsSetTraceLevel(HCTraceLevel::Verbose);
    HCTraceSetTraceToDebugger(true);  // Set to false to suppress VS Output pane
    HCTraceSetClientCallback(TraceCallback);
}
```

## 모범 사례

* **개발에서 Verbose 사용**: 디버깅 및 QA를 위한 포괄적인 추적을 활성화합니다.
* **프로덕션에서 Error 또는 Off**: 성능 영향과 로그 볼륨을 줄입니다.
* **로깅 중앙화**: 통합된 `GameLog` 함수 또는 유사한 함수를 사용하여 PlayFab 및 다른 시스템의 로그를 집계합니다.
* **멀티스레딩 디버그**: 로그의 스레드 ID를 사용하여 동시성 문제를 식별합니다.

## 참고

* [비동기 작업](/services/playfab/sdks/unified-sdk/async-model)
* [메모리 관리](/services/playfab/sdks/unified-sdk/memory-management)
* [추적 및 진단](/services/playfab/sdks/unified-sdk/debug-trace)


## Related topics

- [PlayFab Unified SDK에서 메모리 관리](/ko/services/playfab/sdks/unified-sdk/memory-management.md)
- [PlayFab Unified SDK에서 비동기 호출 수행](/ko/services/playfab/sdks/unified-sdk/async-model.md)
- [디버그 추적](/ko/services/playfab/sdks/c/tracing.md)
- [빠른 시작 Android](/ko/services/playfab/sdks/c/quickstart-android.md)
- [빠른 시작 GDK](/ko/services/playfab/sdks/c/quickstart-gdk.md)
