[Visual Studio/디버거] 특정 라인까지 실행 후 중지하는 방법, 그리고 단축키

디버그의 필수요소. 이 라인까지 실행 후 BREAK

  디버그를 하다 보면 break포인트만으로는 감당할 수 없는 상황이 자주 생깁니다. 예를 들어 다음과 같은 코드가 있다고 생각해보세요.
if (elemMore != null)
{
    Log.InfoFormat("어떠어떠한 로그를 출력!");

    CurrentPage.Click(elemMore);

    CurrentPage.WaitForNetworkIdle0(30000);

    if (_isPageTabNewWindowCreated == false)
        GoBackCount++;
}
  이제 디버그를 돌립니다. 첫줄의 if문에 breakpoint를 걸고, 다음과 같은 프로세스를 따르고자 합니다.

  1. elemMore이 null인지 체크 null이 아니어야 함.
  2. elemMore가 제대로 스크롤된 후 클릭되는지 확인.
  3. _isPageTabNewWindowCreated가 true로 변경되었는지 확인.

  자, 여기서 가장 효율적인 디버깅 방법은 뭘까요? 언뜻 생각해서는, 추가로 Click 메서드에 breakpoint를 걸고, WaitForNetworkIdle0에도 걸고, 그 밑의 if문에도 걸고… 그리고 실행한 뒤 F5를 눌러가며 breakpoint를 따라 디버깅하는 방법이 최선이라 생각할 수도 있습니다.
  그러나 Visual Studio에서는 그러한 노가다를 방지하기 위한 효과적인 방법을 제시해줍니다. 바로 ‘현재 커서까지 실행’이라는 기능이죠. 이 기능을 사용하면, 현재 커서(마우스 커서가 아닙니다. Character 커서입니다.)까지 실행한 뒤 알아서 중지됩니다.
  그럼, 어떻게 써야할까요?

커서까지 실행


  위의 초록색 재생 버튼이 보이시나요? 디버그 중 breakpoint에 걸린 상태에서, 즉 일시 중지된 상태에서 특정 라인에 마우스를 올려두면 저렇게 초록색 여기까지 실행 버튼이 나타나게 됩니다. 그리고 해당 버튼을 누르면 그 라인까지 실행되고, 직접 건 breakpoint가 없어도 알아서 그 라인에서 중지됩니다. 정말 유용한 기능이 아니라고 할 수 없죠.
  그럼 문제. 이 기능을 사용하면 도대체 뭐가 좋은걸까요? 당연히, 노가다의 필요성이 줄어듭니다. 불필요한 반복 작업의 횟수가 줄어들고요.
  무슨 말인지 잘 이해가 안 되실 수도 있겠다 싶네요. 다시 위의 디버깅 프로세스를 봐주세요. 만약 이 기능이 없다면, 두 가지의 방법으로 같은 디버깅을 진행할 수 있습니다.
  우선, 첫 번째 방법으로, elemMore == null을 확인하는 조건문에 breakpoint가 걸린 상태에서, 한 줄씩 한 줄씩 넘기며(F11) 디버깅하는 방법입니다.
  문제는, 이렇게 할 경우 Log.InfoFormat등의, 현재 작업에 필요없는 메서드의 본문까지 들어가버린다는 겁니다. 물론, 이럴 땐 프로시저 단위 실행(F10)을 눌러 Log.InfoFormat등의 부분에서만 건너뛸 수 있지만, F11을 눌렀다가, F10을 눌렀다가, 귀찮은 것은 매한가지입니다.
  그리고 두 번째 방법으로, 위에도 적었던, breakpoint를 매 줄마다 걸어서 디버깅하는 방법입니다. 물론 말할 것도 없이 비효율적입니다. 텍스트 에디터가 씨뻘겋게 되는 것은 덤이고요.
  그러나, 커서까지 실행 기능이 있는 한 이 모든 문제는 다 의미가 없죠. elemMore == null 체크 부분에 breakpoint를 건 후, null이 아닌 것이 확인됐으면 7번째 줄, 즉 WaitForNetworkIdle0에 커서를 옮긴 뒤 ‘커서까지 실행’ 기능을 실행시킵니다.(Ctrl + F10)
  그러면 Click 메서드가 실행된 뒤 WaitForNetworkIdle0에서 실행이 일시 정지됩니다. 그리고 Click메서드가 잘 실행됐는지 확인한 뒤, GoBackCount++ 부분으로 커서를 옮긴 뒤 ‘커서까지 실행’ 기능을 실행시켜 해당 부분에 적중되는지 확인하면 _isPageNewTabWindowCreated가 true인지 false인지 확인할 수 있겠죠.
  쓰잘데기없는 노가다를 획기적으로 줄여주는 멋진 기능입니다.

다시 한 번 강조하는 단축키!

  이 포스트를 쓰는 이유는, 사실 여기까지 실행 기능은 디버그 좀 해보신 분들은 다 아시리라 생각합니다. 허나 단축키는 아닐거라고 생각했기 때문입니다.
  그도 그럴 것이, 위 이미지에서 보시다시피 분명 툴팁은 여기까지 실행이지만, 기능 명칭은 커서까지 실행인지라, 키보드 단축키에서 여기까지 실행 키워드로 백날 찾아봐야 나오지 않기 때문입니다.
  여기까지 실행 == 커서까지 실행 == true의 기본 단축키는 Ctrl + F10입니다. 물론, 키보드 환경설정에서 단축키를 변경할 수도 있습니다. 주의하실 점은, 단축키로 실행할 때엔 마우스 커서 위치가 아닌, 캐릭터 커서 위치까지 실행된다는 점입니다. 코드의 여기까지 실행됐으면 좋겠다! 싶은 부분을 마우스로 클릭하거나 키보드로 이동 해서 커서를 옮긴 뒤 해당 기능을 실행해주셔야 합니다.
&nbps; 그럴 거면, 마우스로 저 초록색 버튼을 클릭해도 되지 않느냐, 하시는 분이 계실지도 모르겠지만 해당 버튼은 코드의 맨 왼쪽, 그러나 줄번호는 아닌 어떤 공간에 마우스를 일정 시간 올려놔야 나오기 때문에 실행하기까지 약간의 딜레이가 있습니다. 하지만, 우리 개발자들은 마우스보다 키보드가 빠른 법. 이 단축키를 활용하신다면 그 짧은 시간을 더더욱 단축할 수 있을 겁니다.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

USB를 뒤는 괜찮은데 앞에 꽂으면 인식이 힘들다?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭