디버깅
디버깅이란 무엇인가
디버깅은 코드에 존재하는 오류를 감지하고 수정하는 과정입니다.
모든 .NET 프로그램은 두 가지 다른 모드로 실행할 수 있습니다.
- 릴리스 모드 - 일반적으로 프로덕션 환경에서 사용됩니다. 이 모드를 사용할 때 .NET은 코드 실행 속도를 향상시키고 메모리 사용량을 줄이는 다양한 컴파일러 및 JIT 최적화를 활성화합니다.
- 디버그 모드 - 주로 개발 및 테스트 환경에서 사용됩니다. 모든 최적화가 비활성화되며, .NET 디버거를 코드에 연결할 수 있습니다.
.NET 라이브러리 및 애플리케이션 작업 시 디버깅에는 다음이 포함됩니다:
- 디버그 모드에서 코드 실행
- .NET 디버거를 코드에 연결
- 코드 실행 흐름이 일시 중지되어야 하는지 여부를 나타내는 코드 중단점 설정
- 중단점에서 계획된 일시 중지와 함께 코드 실행 흐름을 따르기
.NET 디버거 정의
.NET 디버거는 런타임 API를 사용하는 프로그램입니다. 이러한 API는 차례로 .NET 프로세스의 실행 흐름을 제어할 수 있도록 합니다. 즉, 주어진 중단점에서 실행을 일시 중지하고 다양한 상태(이러한 상태 동안 개별 변수가 보유하는 값을 포함)를 저장할 수 있습니다.
디버그 모드에서 알고리즘 빌드
위에서 논의한 바와 같이, cBot 또는 지표를 디버깅하려면 이 확장을 디버그 모드에서 빌드해야 합니다. 기본적으로 cTrader UI에서 빌드 버튼을 클릭하면 코드 최적화를 활성화하기 위해 릴리스 모드에서 확장이 실행됩니다.
cBot 또는 지표를 디버그 모드에서 빌드하려면 .NET CLI 또는 Visual Studio와 같은 외부 IDE를 사용해야 합니다. 이 문서에서는 Visual Studio에서 발생하는 디버그 프로세스를 보여줍니다. 그러나 이 프로세스는 다른 IDE에서도 약간의 변경으로 복제할 수 있습니다.
컴퓨터에 최신 버전의 Visual Studio를 설치하고 다음 작업을 수행합니다:
-
코드 편집기 창 상단의 편집 드롭다운에서 Visual Studio에서 편집 옵션을 선택하여 Visual Studio에서 지표 또는 cBot을 엽니다.
-
Visual Studio 코드 편집기 상단의 메뉴에서 디버그를 선택합니다.

- 디버그 모드에서 cBot 또는 지표를 빌드합니다.
cBot 또는 지표 디버깅
이제 디버그 모드에서 cBot 또는 지표를 빌드하는 방법을 알았으니, 실제로 디버깅하는 방법에 초점을 맞춰보겠습니다.
-
지표 또는 cBot의 액세스 권한을
FullAccess로 변경하세요. -
실행 중인 지표 또는 cBot 프로세스에 디버거를 연결하세요. 이는
System.Diagnostics.Debugger.Launch()메서드를 호출하여 수행할 수 있습니다.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
참고
System.Diagnostics.Debugger.Launch() 메서드는 OnStart() 메서드(cBot의 경우) 또는 Initialize() 메서드(지표의 경우)에서 호출되어야 합니다.
- 새로운 cBot 또는 지표 인스턴스를 실행하세요. 이미 실행 중인 인스턴스가 있다면 UI에서 선택하세요. Visual Studio로 리디렉션되며 디버거를 선택하라는 프롬프트가 나타납니다. 디버거를 선택하고 확인을 클릭하세요.

디버깅이 시작되면 중단점을 설정하고, 코드 라인을 단계별로 실행하며, 호출 스택과 변수 값을 확인할 수 있습니다.
Visual Studio에서 디버깅하는 방법에 대한 완전한 가이드는 Visual Studio 디버깅 문서를 참조하세요.
DEBUG 전처리 지시문 사용
cBot 또는 지표 코드에서 DEBUG 전처리 지시문을 사용하여 실행 흐름을 제어할 수도 있습니다.
#if DEBUG 지시문은 디버그 모드에서만 코드 블록 또는 라인을 실행하려는 경우에 유용합니다.
1 2 3 4 5 6 7 8 9 | |
위의 예제에서 "Not Debugging" 코드 라인은 디버그 모드에서 cBot을 빌드할 경우 컴파일되지 않습니다.
C# 전처리 지시문에 대한 추가 정보는 이 문서에서 확인할 수 있습니다.