http://ngmaster.mooo.com/ngmaster/xe/index.php?document_srl=10306&mid=COMMUNITY_Q_AND_A
안녕하세요. 소심비형입니다. 오늘은 디버깅에 대해서 알아보도록 하겠습니다.
처음 프로그래밍이라는 세계에 입문하게되면, 대부분은 해당 언어의 역사적 배경과 앞으로의 비전에 대해서 먼저 알아보겠죠? 그 다음에 "Hello Csharp!" 내지는 "Hello World!"를 콘솔에 출력 해보고 기본 문법으로 넘어가게 됩니다. 수업을 진행하면서 문제가 발생할 때마다 디버깅을 통해 버그(Bug)를 찾아내고 수정하여 올바르게 동작할 수 있도록 하는 방법을 배우게 됩니다.
이렇게 한가지 툴을 이용하여 체계적으로 학습 할때는 크게 문제가 되지 않습니다. 다만, 신입으로 입사하여 프로젝트에 할당되었는데 전혀 경험해보지 못한 생소한 툴을 이용하여 개발해야하는 경우 멘붕에 빠지기 쉽습니다. 요즘엔 관련 레퍼런스가 워낙 풍부하고 블로그나 기타 강좌 사이트의 커뮤니티에서 도움을 받기도 쉬워서 크게 문제가 되지는 않을겁니다^^; 하지만, 혹시라도 폐쇄적인 환경에서 개발해야 한다면 문제가 될수도 있겠죠? 예를 들면, Java 경력만 있던 개발자가 C#을 하기위해 Visual Studio를 사용한다던가 또는 그 반대로 C#만 경험해본 개발자가 Java 프로젝트에 투입되어 Eclipse를 사용하여 개발하는 경우입니다. 물론, 인터넷도 안되는 상황이겠죠.
(요즘은 스마트폰으로 인터넷을 자유롭게 할 수 있기 때문에 프로젝트룸 안에서 인터넷이 안되는 환경이라도 크게 문제가 되지는 않습니다.)
보통 신입을 위와같은 프로젝트에 투입할리는 없지만, 선임이 좀 까칠하다던가 잘 안가르쳐주는 스타일이라면 괴로운 프로젝트가 될수도 있습니다. 어느정도는 스스로 해결할 수 있는 능력을 키우는게 좋겠죠.
Visual Studio의 디버깅에 사용되는 단축키는 크게 5가지입니다.
단축키 | 설명 |
F5 | 실행은 다음 중단점까지 모든 프로시저를 실행시킵니다. |
F9 | 중단점을 추가하거나 제거합니다. |
F10 | 프로시저 단위로 실행합니다. |
F11 | 클래스 생성자 또는 메소드등의 내부로 프로시저를 이동시킵니다. 예를들어, 메소드를 만나게되면 해당 메소드의 내부로 이동되고 첫번째 줄에서 중단점이 시작됩니다. |
Shift + F11 | 내부로 들어온 프로시저를 나갑니다. 메소드를 호출한 중단점에서 다시 시작됩니다. |
간단한 테스트를 위해 콘솔 프로그램과 참조를 위한 프로젝트를 각각 추가해줍니다.
콘솔 응용 프로그램의 참조에 클래스 라이브러리 프로젝트를 추가해줍니다.
ReferenceProject의 Class1.cs에 아래와 같이 코드를 추가하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ReferenceProject { public class Class1 { public int Plus( int a, int b) { int result = a + b; return result; } public int Plus( double a, double b) { throw new OverflowException(); } } } |
콘솔 응용 프로그램의 Program.cs에는 아래와 같이 코드를 추가한 후 라인 13에서 F9를 눌러 중단점을 걸어줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main( string [] args) { var calc = new ReferenceProject.Class1(); int iPlus = calc.Plus(10, 10); Console.WriteLine(iPlus); double dPlus = calc.Plus(10.5d, 9.5d); Console.WriteLine(dPlus); } } }
|
댓글