[초보 프로그래밍 팁] 내 실수를 찾아줘! Visual Studio 디버깅 테크닉! - 제 2편 기본 단축키
내 실수를 찾아줘! Visual Studio 디버깅 테크닉!
첫번째 시간으로 디버깅에 필요한 단축키와 그것을 사용하는 방법을 다루도록 하겠습니다.
먼저 실습 환경에 필요한 아주 간단한 스크립트를 준비할건데요.
아래 내용을 보시고 똑같이 준비 해보시길 바랍니다.
그리고 아래 코드를 복사 붙여넣기 해주세요.
using UnityEngine;
public class DebugTest : MonoBehaviour
{
/// <summary>
/// 테스트를 위한 임의의 구조체입니다.
/// </summary>
private struct UnitData
{
public int _value01 { get; set; }
public float _value02 { get; set; }
public string _value03 { get; set; }
public void Init()
{
_value01 = 0;
_value02 = 0f;
_value03 = string.Empty;
}
}
/// <summary>
/// 유니티에서 제공하는 MonoBehaviour의 Start 함수입니다.
/// </summary>
private void Start()
{
// 테스트용 구조체를 만들고 초기화 합니다.
var unitData = new UnitData();
unitData.Init();
ChangeUnitDataValue(ref unitData);
// 구조체의 값을 확인합니다.
Debug.Log($"유닛 데이터 확인. value01 : {unitData._value01}, value02 : {unitData._value02}, value03 : {unitData._value03}");
}
private void ChangeUnitDataValue(ref UnitData unitData_)
{
// 테스트용 구조체의 값을 변경합니다.
unitData_._value01 = 10;
unitData_._value02 = 10f;
unitData_._value03 = "테스트용 스트링";
}
}
이것으로 각 디버깅 단축키를 확인해 볼 실습 환경이 완료되었습니다.
디버깅을 하는데 필요한 가장 핵심적인 단축키는 다음과 같습니다.
[핵심 단축키 리스트]
F5 : 현재 코드로 빌드를 진행하고, 유니티에 연결하는 단축키입니다.
Shift + F5 : 디버깅 상태에서 디버깅 모드를 종료하는 단축키입니다.
F9 : 중단점을 등록하거나 제거합니다.
Ctrl + F9 : 중단점을 끄거나 켭니다.
F10 : 코드 1줄 실행 명령어. 현재 보고 있는 코드 화면 기준에서 한줄 실행합니다.
F11 : 코드 1줄 실행 명령어. 실행되고 있는 흐름을 모두 포함하여 한줄 실행합니다.
단축키만 쭉 늘어놔서는 이해하기 어렵겠죠? 이제 본격적으로 실습을 한번 해보겠습니다.
위처럼 빨간 원을 클릭하거나 F9키를 눌러 중단점을 추가해주세요.
그러면 위와 같이 중단점 마크가 해당 줄에 생길것입니다.
이제 디버깅을 시작해야합니다!
위 처럼 비주얼 스튜디오의 화면 상단에 Unity에 연결을 클릭하시거나 F5를 눌러 디버깅을 실행하세요!
그러면 위 처럼 화면이 살짝 바뀌면서 디버그 모드로 전환될 것입니다. 하지만, 이는 아직 유니티에서 실행을 시작하는것을 대기하는 상태일 뿐이구요. 실제로 유니티의 실행 버튼을 클릭하여 유니티를 실행하는 경우에 디버그가 연결되게 됩니다.
유니티로 이동하셔서 Hierarchy에 빈 오브젝트를 만드시고 Add Component로 우리가 만든 스크립트를 붙여주세요!
이제 디버깅 테스트를 위한 준비가 모두 끝났습니다.
유니티의 실행 버튼을 눌러주세요!
그러면 평소와 다르게 아까 중단점을 눌러둔곳에 노란색 화살표가 나타날 것입니다.
켜져있는 중단점은 코드가 실행되는 흐름에 반드시 적중하여 중단되게 되며, 해당 지점으로부터 코드를 관찰할 수 있게 해줍니다.
중단점은 F9를 이용하여 다시 제거하실수도 있으며, Ctrl+F9를 사용하면 제거하지 않고 잠시 꺼둘수도 있어 임시로 끄거나 켜기에 용이하다는 장점이 있습니다.
그러면 이제 마우스를 이용해 각종 변수에 마우스를 가져다 대 보세요.
현재 화살표가 닿은 지점 직전까지의 값들을 확인할 수 있게됩니다. 이제부터는 F10, F11을 통하여 한줄 한줄 코드를 넘어가며, 어떤것이 문제가 되는지, 내 코드가 어떤식으로 흘러가는지 관찰하면 됩니다.
여기서 F10과 F11은 모두 1줄씩 넘어가지만 큰 차이가 있습니다.
이를 알아보기 위해 ChangeUnitDataValue(ref unitData); 부분에 중단점을 두고 각각 어떤식으로 반응하는지 알아보겠습니다.
중단점을 올바르게 설정 하셨으면 프로젝트를 실행했다가 풀었다가 하시면서 어떤식으로 동작하는지 확인해보시면 됩니다.
확인 해보셨나요?
F10을 누르신 경우 바로 함수내에서 아랫줄로 내려가지만, F11을 누르신 경우 ChangeUnitDataValue로 진입하신것을 확인하실 수 있을겁니다.
이렇게 각 특성에 따라서 함수 내부까지 진입하여 확인해야하는 경우 F11을 사용하고, 굳이 볼 필요 없는경우 F10을 눌러서 내부 내용은 스킵하시면 효율적으로 디버깅을 할 수 있습니다.
기본적인 디버깅 방법에 대한 내용 설명은 끝났는데요.
다음은 호출 스택과 중단점 창, 조사식 창을 다뤄보도록 하겠습니다.
알려드린대로 충분히 단축키 숙달하셔서 문제를 혼자서도 금방 찾아내실 수 있게 되면 좋겠습니다.
궁금한게 있으시면 덧글달아주세요.
감사합니다.