티스토리 뷰
[그림 A-1] 비주얼 C++ 통합환경: 가장 요긴한 툴은 바운즈체커, 인크레디 빌드(IncrediBuild), 퍼포스(Perforce), 비주얼 어시스트다. 독자들의 IDE에 포함된 애드인은 [Tools]->[Customize...]를 선택한 다음, Add-ins... 탭을 선택하면 확인해볼 수 있다(몇 가지 애드인은 www.codeproject.com에서 구할 수 있다).
바운즈 체커
바운즈 체커는 메모리 릭(memory leak), 메모리 오버런(memory overrun)등의 오류를 자동으로 발견하는 요긴한 툴이다. 프로젝트의 선임자가 작성해놓은 코드에서 발생하는 곳을 모르는 메모리 릭 때문에 밤새워본 사람들이라면, 바운즈 체커의 위력을 실감할 수 있을 것이다. 3일간의 밤샘을 바운즈 체커는 단 5분 만에 해결할 수 있다!
[그림 A-2] 바운즈 체커의 툴바 화면: 바운즈 체커는 메모리 릭뿐만 아니라, 다양한 종류의 오류와 오류 가능성을 발견하는 유용한 툴이다.
부록 CD-ROM에 제공되는 8장의 /CDC_step2_CDC 폴더를 열어서 바운즈 체커가 어떻게 동작하는지 확인해보자. CDCSTEP2.DSW 프로젝트를 연다. 그리고 CView.cpp 파일의 OnCreate()를 다음과 같이 수정한다.
LRESULT CView::OnCreate(WPARAM wParam,LPARAM lParam) {
int* p = new int(); // 동적 메모리 할당
return 0L;
}//CView::OnCreate
소스를 보면 함수 내부에서 힙에 메모리 할당을 한 뒤, 할당한 메모리를 클리어하지 않고, 함수를 탈출하는 논리 오류가 포함된 것을 확인할 수 있다. 이제 바운즈 체커 툴바의 첫 번째 버튼을 눌러 바운즈 체커를 활성화 시키고, F5를 눌러 디버그 런 한다. 그러면 바운즈 체커가 아래와 같은 오류 윈도우를 표시한다.
[그림 A-3] 바운즈 체커의 메모리 릭 발견: 바운즈 체커는 함수 스코프를 빠져 나가는 순간 메모리 릭이 발생했음을 사용자에게 보고한다.
바운즈 체커가 보고한 대화상자에서 [Debug] 버튼을 누르면 메모리 릭이 발생한 시점으로 이동한다. 또한 바운즈 체커의 결과 창에서 상세한 정보를 얻을 수 있다.
[그림 A-4] 바운즈 체커의 결과 창: 소스에서 4바이트의 메모리 릭이 발생했음을 보고한다.
코드위즈
코드위즈는 유용한 단축키를 제공하고, 코드 생성을 돕는다. 코드위즈를 설치한 후, Ctrl+1을 누르면, 클래스 정의 파일(*.h)과 구현 파일(*.cpp)을 토글하여 연다. 긴 함수의 중간에서 다음 함수의 시작 부분으로 가기 위해 Ctrl+PgDn을 누르면, 다음 함수의 시작 부분으로 이동한다. 멤버 함수를 선언한 다음, 함수의 몸체를 구현 파일에 자동으로 생성하기 위해 Ctrl+6을 누른다.
[그림 A-5] 코드위즈의 애드인 메뉴: 각종 편리한 단축키를 제공한다.
코드위즈의 멤버 함수 생성기능을 알아보자. CView.h의 끝 부분에 다음과 같이 함수 프로토타입을 추가한다.
...
LRESULT OnLButtonDown(WPARAM wParam,LPARAM lParam);
//}}seojt
//}}AFX_MESSAGE
int CodeWizFunction(int iParam, float fParam);
DECLARE_MESSAGE_MAP()
};//class CView
이제 커서를 CodeWizFunction()이 선언된 행의 아무 곳에나 위치시키고, Ctrl+5를 누른다. 그러면 행이 반전되면서, 멤버 함수에 대한 정보를 코드위즈가 기록해둔다. 다음에 Ctrl+1을 눌러 CView의 구현 파일을 연다. 그러면 CView.cpp 파일이 열린다. 커서를 함수를 생성할 적당한 곳에 위치시키고 Ctrl+6을 누르면 아래와 같이 함수의 몸체가 자동으로 생성된다.
int CView::CodeWizFunction(int iParam,float fParam)
{
//
}
코드위즈의 코드 템플릿 기능 또한 유용하다. 코드를 후에 참조하기 위해, 코드의 전후에 //{{ seojt와 //}} seojt를 삽입하기로 했다고 하자. 그러면 코드위즈의 코드 템플릿을 편집해서 해당 기능을 메뉴에 등록한다. 예로 방금 생성한 함수 몸체의 전후에 주석을 삽입하는 과정을 처리해보자.
먼저 함수의 몸체를 모두 블록으로 선택한다. 그리고 코드위즈의 메뉴를 불러 등록된 기능을 활성화한다(필자의 경우 Ctrl+0,s이다). 그러면 선택한 영역의 앞뒤로 자동으로 코드가 삽입된다. 아래의 코드에서 두 줄의 주석은 자동으로 삽입된 것이다.
//{{ seojt: 2005-01-22 오후 4:47:28
int CView::CodeWizFunction(int iParam,float fParam)
{
return 0;
}
//}} seojt: 2005-01-22 오후 4:47:28
[그림 A-6] 코드위즈의 코드템플릿 메뉴: 자주 사용하는 코드 템플릿을 등록해 사용하면, 번거로운 타이핑을 대폭 줄일 수 있다.
출처) HANBITBOOKS
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 와우
- 박영창
- 삼성 소프트웨어 멤버십
- HPUX
- 오픈 소스 SW와 전략적 활용
- 프로그래밍
- 오라클
- 과제물
- wow
- 실전! 업무에 바로 쓰는 SQL 튜닝
- 일기
- 영화
- 레포트
- oracle
- 캐논
- 네트워크
- 후기
- hp-ux
- 책
- 회식
- 시간표
- SQL 튜닝
- 실습으로 배우는 Unix System Admin (HPUX)
- 모임
- 리눅스
- World Of Warcraft
- Japanimation
- 애니메이션
- SSM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함