- Posted by zmeun on 2009. 06. 03 11:32
Visual Studio 디버깅 Tip
이미 많은 분들이 알고 있을 법한 내용인 듯 합니다. 바로 Visual Studio를 이용해서 디버깅을 할 때 지루한 작업을 피할 수 있는 Tip인데요..
내용은 이렇습니다. 루프를 돌다가 오류가 발생했습니다. 그럼 코드를 보다가 한번에 오류를 발견하지 못하면 디버깅을 시작하겠죠. 루프 코드 블록 중에 의심이 되는 코드 라인에 중단점을 찍습니다. 그리고 그 중단점은 루프가 실행되는 동안 계속 적용될 것입니다.
저 역시 마찬가지겠지만, 이런 경우를 여러 번 겪으셨을 겁니다. 그리고 이런 순간은 상당히 지루합니다. 루프를 반복하는 횟수가 크다면 그 지루함은 더 커지겠죠. 간단히 이런 코드를 작성해 보았습니다.
|
static void Main(string[] args)
{ int maxCount = 100; for (int i = 0; i < maxCount; i++) { Console.WriteLine("index:{0} - something do...", i); } Console.Read();} |
상황을 설정해 보자면, 100번의 루프를 도는 코드 블록 내에서, 어느 시점에 오류가 발생했습니다. 디버깅을 합니다. 그런데, 코드의 컨텍스트를 생각해 보면 분명 루프의 후반부에서 오류가 발생할 확률이 높다는 생각이 듭니다.(동물적인 예리한 본능.. 으어응~… -_-;)
이런 상황에서는 두 가지 방법이 있죠. 첫 번째.. 0부터.. 오류를 잡을 때까지 루프를 돌린다. 두 번째… 조사식에서 변수 i의 값을 의심되는 부분에 가까운 값으로 할당한 후, 그 값 이후부터 디버깅을 진행한다.
첫 번째 방법이야 설명할 것도 없고 두 번째 방법은 다음과 같이 처리 되겠죠.
저는 루프 내에서 의심되는 부분이 i 값이 99일 경우인 것 같아서, 조사식에 i의 값을 98로 할당합니다.(이 그림 처럼요…) 그리고 디버깅을 시작합니다. 그럼 당연히 다음과 같이 변수 i의 값이 98, 99인 경우에만 코드가 실행 되겠죠..
네..이런 식으로 나름의 조건을 할당해 디버깅을 진행하는 방법이 있었습니다. 그런데, 이런 방법 말고도 조금 더 편리한 방법으로 디버깅을 할 수 있는 기능이 Visual Studio에 들어 있습니다. “조건을 적용한 디버깅”이라고 이야기 할 수 있겠는데요…… 내용은 아주 간단합니다. 직접 한번 보시죠.
여느 때와 같이 원하는 코드 라인에 중단점을 적용합니다. 그리고 중단점에 마우스 포인터를 위치시키고 마우스 오른쪽 버튼을 눌러 컨텍스트 메뉴를 나타냅니다. 메뉴를 보면 조건(Condition)이라는 것이 있습니다. 네. 바로 이것입니다.이 조건 메뉴를 통해 디버깅 시에 원하는 조건을 적용할 수 있습니다.
이 메뉴를 클릭해 보면 조건을 적용할 수 있는 창이 뜨고, 이 창을 통해서 조건을 적용합니다.
이 그림과 같이 조건을 적용하면, 앞에서 조사식 창을 통해 했던 작업을 좀 더 쉽게 할 수 있습니다. 결과 역시 같겠죠~. 이것 외에도 중단점 조건 창에서 지정하는 조건은 실행 컨텍스트에서 활성화된 모든 객체를 사용할 수 있으며 인텔리센스도 지원합니다. 간단한 테스트를 위해 다음과 같이 코드를 수정해 봤습니다.
|
for (int i = 0; i < maxCount; i++)
{ bool even = (i % 2 == 0); Console.WriteLine("index:{0} - something do...", i);} |
변수 i가 짝수인지를 체크하는 bool 타입의 변수를 추가합니다. 그리고 실행 변수 i가 짝수일 경우에만 디버깅을 하도록 조건을 추가합니다.
조건에 bool 타입의 변수 even을 입력합니다. 그럼 even이 true인 경우에만 중단점이 적용될 것입니다. 그리고 앞에서 말한 대로 even 변수의 인텔리센스까지 잘 나타납니다.
쉬운 조작을 통해서, 이젠 지루하지 않은 smart한 디버깅을 할 수 있게 되었습니다. ㅋㅋ 그리고 이 기능은 Visual Studio 2005부터 사용할 수 있으니 참고하시기 바랍니다.
감사합니다.~~
posted by zmeun
이 포스트를 평가해 주세요.
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5